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

Lists with FlatList

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

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

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

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

FlatList က data (array) + renderItem (item တစ်ခုစီကို ဘယ်လို ပြသမလဲ) + keyExtractor (item တစ်ခုစီရဲ့ unique key) ဆိုတဲ့ prop သုံးခုအဓိကနဲ့ အလုပ်လုပ်ပါတယ်။ ScrollView + .map() ကို item ရာနဲ့ချီရင် screen ပေါ် မမြင်ရသေးတဲ့ item တွေအားလုံးကို upfront render လုပ်ထားလို့ memory/performance ပြဿနာ ဖြစ်နိုင်ပါတယ် — FlatList ကတော့ virtualization (screen ပေါ်နီးစပ်တဲ့ item များကိုသာ render, အခြားကို recycle) သုံးပြီး item ရာချီ list တွေမှာ performance ကောင်းနေစေပါတယ်။

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

Chat app message list, e-commerce product list, social media feed — ဒီလိုမျိုး item အများကြီးပါတဲ့ list တိုင်းအတွက် FlatList က standard choice ပါ။ renderItem ထဲမှာ card component တစ်ခုစီကို return လုပ်ပြီး, keyExtractor ကို item._id ဒါမှမဟုတ် item.id ကို string ပြောင်းပြီး ပေးရပါတယ် — key မမှန်ရင် React reconciliation performance ကျနိုင်ပါတယ်။

Code နမူနာ

javascript
import { FlatList, View, Text, StyleSheet } from 'react-native';

const products = [
  { id: '1', name: 'T-Shirt', price: '15000 MMK' },
  { id: '2', name: 'Sneakers', price: '85000 MMK' },
  { id: '3', name: 'Backpack', price: '45000 MMK' },
];

export default function ProductList() {
  return (
    <FlatList
      data={products}
      keyExtractor={(item) => item.id}
      renderItem={({ item }) => (
        <View style={styles.card}>
          <Text style={styles.name}>{item.name}</Text>
          <Text>{item.price}</Text>
        </View>
      )}
    />
  );
}

const styles = StyleSheet.create({
  card: { padding: 16, borderBottomWidth: 1, borderColor: '#eee' },
  name: { fontWeight: '600', fontSize: 16 },
});
You should see
Product list ကို FlatList ဖြင့် scroll လုပ်ကြည့်နိုင်အောင် render နိုင်မည်။

၅ မိနစ် စမ်းကြည့်

ကိုယ်ပိုင် data array (ဥပမာ favorite movies list) တစ်ခု ဖန်တီးပြီး FlatList နဲ့ render ကြည့်ပါ။

သတိလေးတစ်ချက်

FlatList ကို ScrollView ထဲမှာ nest မထားပါနှင့် (VirtualizedList nested inside ScrollView warning ပေါ်လာပါလိမ့်မယ်) — outer container ကို View သုံးပါ, ScrollView မလိုအပ်ပါဘူး။

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

  • keyExtractor ကို ချန်ထားပြီး array index ကို default key အဖြစ် အားကိုးခြင်း — list ပြောင်းလဲရင် bug ဖြစ်နိုင်
  • Item ရာနဲ့ချီတဲ့ list ကို ScrollView + .map() နဲ့ ဆက်လုပ်နေခြင်း (performance ကျ)

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

ကိုယ်ပိုင် data array (ဥပမာ favorite movies list) တစ်ခု ဖန်တီးပြီး FlatList နဲ့ render ကြည့်ပါ။

You'll know it worked when: Product list ကို FlatList ဖြင့် scroll လုပ်ကြည့်နိုင်အောင် render နိုင်မည်။

Lists with FlatList | Thuta Learning