CodeBlanks Logo Icon CodeBlanks

AsyncStorage

AsyncStorage ile notları kaydedersin.

AsyncStorage nedir?

AsyncStorage React Native'te kalıcı veri saklama sağlayan modüldür. Uygulama kapansa bile veriyi korur; bir anahtar-değer deposudur. AsyncStorage.setItem("notes", value) ile kaydeder, AsyncStorage.getItem("notes") ile okursun.

Tüm işlemler async'tir; bu yüzden await kullanırsın. Değer yalnızca dize olabilir; bu yüzden nesneleri ve dizileri JSON.stringify ile dizeye çevirip kaydedersin, okurken de JSON.parse ile geri çevirirsin. AsyncStorage, notlar gibi küçük veriler için idealdir; büyük verilerde SQLite gibi alternatifler tercih edilir.

Uygulama AsyncStorage ile kaydet

NotesApp bileşenine saveNotes adında async bir fonksiyon ekle. AsyncStorage.setItem("notes", JSON.stringify(notes)) ile notları kaydet. Fonksiyon await kullansın.

Başlangıç kodu

App.js
import { useState } from "react";
import { Text, TextInput } from "react-native";
import AsyncStorage from "@react-native-async-storage/async-storage";

function NotesApp() {
  const [notes, setNotes] = useState([{ id: "1", title: "Alışveriş", body: "Süt, ekmek" }]);
  const [title, setTitle] = useState("");
  const [body, setBody] = useState("");

  // saveNotes adında async bir fonksiyon yaz
  // AsyncStorage ile notes'u kaydet; JSON.stringify kullan

  return <Text>Notlar</Text>;
}

Örnek çözüm

App.js
import { useState } from "react";
import { Text, TextInput } from "react-native";
import AsyncStorage from "@react-native-async-storage/async-storage";

function NotesApp() {
  const [notes, setNotes] = useState([{ id: "1", title: "Alışveriş", body: "Süt, ekmek" }]);
  const [title, setTitle] = useState("");
  const [body, setBody] = useState("");

  async function saveNotes() {
    await AsyncStorage.setItem("notes", JSON.stringify(notes));
  }

  return <Text>Notlar</Text>;
}

AsyncStorage okuma

Kayıt yaptıktan sonra uygulama açıldığında notları geri yüklemen gerekir. AsyncStorage.getItem("notes") ile kayıtlı dizeyi okursun; bu işlem async'tir, bu yüzden await kullanırsın. Dönen dize JSON.parse ile nesneye çevrilir.

Okuma işlemini useEffect içine koyarsın; öyle ki bileşen ekrana ilk geldiğinde (mount) notlar yüklensin. Boş dizi [] dependency array ile bu efekt yalnızca bir kez çalışır. Eğer kayıt yoksa getItem null döner; bu durumda boş dizi kullanırsın. Böylece uygulama her açılışta kayıtlı notları geri yükler.

Soru ve cevaplar

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

1 AsyncStorage'dan oku

Soru
const raw = await AsyncStorage.____("notes");
Cevap
const raw = await AsyncStorage.getItem("notes");

Açıklama: getItem ile kayıtlı dize okunur.

2 AsyncStorage ne zaman yüklenmeli?

App.js
useEffect(() => {
  /* yükleme */
}, []);
  • Her render'da
  • useEffect ile mount'ta Doğru cevap
  • Yalnızca butona basılınca
  • Hiçbir zaman

Açıklama: useEffect ile mount'ta yüklenir.

3 Parçayı rolüne eşle

Kavram Anlamı
AsyncStorage.setItem Kaydeder
AsyncStorage.getItem Okur
JSON.stringify Nesneyi dizeye çevirir
JSON.parse Dizeyi nesneye çevirir

Orta seviye bölümündeki tüm dersler