ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
AsyncStorage က key-value storage ဖြစ်ပြီး device ပေါ်မှာ data ကို persist (app ပိတ်ပြီးလည်း ရှိနေအောင်) သိမ်းပေးပါတယ် — web browser ရဲ့ localStorage နဲ့ concept တူပေမယ် asynchronous (Promise-based) API ဖြစ်ပါတယ်။ setItem(key, value) နဲ့ save, getItem(key) နဲ့ ဖတ်, removeItem(key) နဲ့ ဖျက်ပါတယ် — value ကို string ချည်းသာ သိမ်းလို့ရလို့ object/array ကို JSON.stringify/JSON.parse ဖြင့် convert ရပါတယ်။
လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်
User preference (theme, language) ဒါမှမဟုတ် login token ကို AsyncStorage ထဲ သိမ်းထားရင် app ကို ပိတ်ပြီးပြန်ဖွင့်ချိန် login screen ကို ထပ်ပြသစရာမလိုဘဲ token ရှိရင် ချက်ချင်း Home screen ဆီ navigate လုပ်ပေးနိုင်ပါတယ် (auto-login pattern)။ Sensitive data (password, payment info) ကိုတော့ AsyncStorage မှာ plain text သိမ်းသင့်ပါဘူး — encrypted storage (expo-secure-store) ကို အစားသုံးပါ (Cybersecurity tutorial ရဲ့ secret management concept ကို ပြန်သတိရပါ)။
Code နမူနာ
import AsyncStorage from '@react-native-async-storage/async-storage';
// Save
const saveUserPrefs = async (prefs) => {
await AsyncStorage.setItem('userPrefs', JSON.stringify(prefs));
};
// Load
const loadUserPrefs = async () => {
const json = await AsyncStorage.getItem('userPrefs');
return json ? JSON.parse(json) : null;
};
// Remove
const clearUserPrefs = async () => {
await AsyncStorage.removeItem('userPrefs');
};App ကို ပိတ်ပြီးပြန်ဖွင့်ရင် AsyncStorage ထဲ သိမ်းထားတဲ့ userPrefs ကို ပြန်ဖတ်ယူနိုင်မည်။၅ မိနစ် စမ်းကြည့်
Theme preference (light/dark) ကို AsyncStorage ထဲ save/load လုပ်တဲ့ function ၂ ခု ကိုယ်တိုင် ရေးကြည့်ပါ။
သတိလေးတစ်ချက်
AsyncStorage ထဲက data ကို device root access ရှိသူ (rooted/jailbroken device) က ဖတ်နိုင်ပါတယ် — truly sensitive data (payment credential) အတွက် expo-secure-store ဒါမှမဟုတ် platform native secure storage ကိုသာ သုံးပါ။