CodeBlanks Logo Icon CodeBlanks

Sync

Online olunca senkronize etmeyi öğrenirsin.

Senkronizasyon

Çevrimdışı kaydedilen veriyi daha sonra sunucuya göndermeye senkronizasyon denir. Kullanıcı çevrimdışıyken yerel bir kuyruğa yazarsın; çevrimiçi olunca kuyruktaki her öğeyi sırayla sunucuya gönderirsin. Bu kalıp, çevrimdışı değişikliklerin kaybolmamasını sağlar.

Senkronizasyonu başlatmak için NetInfo aboneliği kullanılır: ağ durumu çevrimiçi olunca syncQueue() çağrılır. Bu işlev kuyruktaki her öğeyi alır, sunucuya gönderir, başarılı olursa kuyruktan kaldırır. Başarısız olursa öğe kuyrukta kalır; bir sonraki denemede tekrar denenir. Bu kalıp, kâğıt üzerinde 'gönder' düğmesine basılmış ama ağ bekleyen mesajlar gibi düşünülebilir.

NetInfo aboneliği ile tetikleme

Senkronizasyonu ağ durumu değişince tetiklersin. NetInfo.addEventListener((state) => {{ if (state.isConnected) syncQueue(); }}) kalıbı kullanılır. Bu abonelik, ağ her değiştiğinde çağrılır; bağlantı gelince kuyruk senkronize edilir.

Aboneliği useEffect içinde kurar, temizlikte kaldırırsın. Abonelik bir işlev döndürür; bu işlev unsubscribe olarak adlandırılır ve bileşen kapanınca çağrılır. Bu kalıp, kullanıcı çevrimiçi olur olmaz kuyruğun boşalmasını sağlar. Aboneliği kurmadan önce kuyruk doluysa, uygulama açılır açılmaz da bir senkronizasyon denenebilir.

Uygulama Ağ gelince senkronize et

Boş useEffect'i tamamla. const unsubscribe = NetInfo.addEventListener((state) => {{ if (state.isConnected) syncQueue(); }}) çağır. return () => unsubscribe() ile temizle. syncQueue parametre olarak verilir. useEffect'in ikinci parametresi [] olsun.

Başlangıç kodu

App.js
import React from 'react';
import NetInfo from '@react-native-community/netinfo';

export function useSyncOnOnline(syncQueue) {
  React.useEffect(() => {
    // ağ gelince senkronize et ve temizlik döndür
  }, []);
}

Örnek çözüm

App.js
const unsubscribe = NetInfo.addEventListener((state) => {
  if (state.isConnected) syncQueue();
});
return () => unsubscribe();

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Senkronizasyon işlevini yaz

Soru
async function ____() { /* kuyruğu sunucuya gönder */ }
Cevap
async function syncQueue() { /* kuyruğu sunucuya gönder */ }

Açıklama: syncQueue kuyruğu senkronize eder.

2 Senkronizasyon ne zaman başlatılır?

App.js
NetInfo.addEventListener((state) => { if (state.???) syncQueue(); })
  • type === 'wifi'
  • isInternetReachable === false
  • details
  • isConnected Doğru cevap

Açıklama: isConnected true olunca senkronizasyon başlar.

3 Adımı amacına eşle

Kavram Anlamı
NetInfo.addEventListener Ağ değişimini dinler
syncQueue Kuyruğu gönderir
isConnected Bağlantı durumu
unsubscribe Aboneliği kaldırır

İleri seviye bölümündeki tüm dersler