Thuta Learning
ရှာဖွေရန်
AdvancedMobile Developmentintermediate

AsyncStorage — Local Data Persistence

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • AsyncStorage — Local Data Persistence ကို ကြောက်စရာမလိုအောင် နားလည်မယ်
  • ကိုယ်တိုင် code ရေးပြီး Expo Go ပေါ်မှာ run ကြည့်တတ်မယ်
  • Real app project ထဲမှာ ဒီ concept ကို ချက်ချင်း အသုံးချတတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

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 နမူနာ

javascript
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');
};
You should see
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 ကိုသာ သုံးပါ။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • AsyncStorage ကို synchronous (await မပါဘဲ) သုံးကြိုးစားခြင်း — Promise-based ဖြစ်လို့ await/then လိုအပ်
  • Sensitive data (password, token) ကို plain AsyncStorage မှာ encrypt မလုပ်ဘဲ သိမ်းခြင်း

အခု ကိုယ်တိုင် စမ်းကြည့်

Theme preference (light/dark) ကို AsyncStorage ထဲ save/load လုပ်တဲ့ function ၂ ခု ကိုယ်တိုင် ရေးကြည့်ပါ။

You'll know it worked when: App ကို ပိတ်ပြီးပြန်ဖွင့်ရင် AsyncStorage ထဲ သိမ်းထားတဲ့ userPrefs ကို ပြန်ဖတ်ယူနိုင်မည်။

AsyncStorage — Local Data Persistence | Thuta Learning