কম্পিউটার টিউটোরিয়াল

React Native-এ VirtualizedList কম্পোনেন্ট ব্যবহার করা

VirtualizedList হলো React Native-র লো-লেভেল ভার্চুয়ালাইজড লিস্ট কম্পোনেন্ট। এটি বড় ডেটাসেটের জন্য মেমরি এবং পারফরম্যান্স অপ্টিমাইজ করে। FlatList এবং SectionList এর ভেতরে এটি ব্যবহার হয়। সরাসরি ব্যবহার করলে আরও কন্ট্রোল মেলে।

বেসিক সিনট্যাক্স

<VirtualizedList
  data={DATA}
  initialNumToRender={4}
  renderItem={renderItem}
  keyExtractor={keyExtractor}
  getItemCount={getItemCount}
  getItem={getItem}
/>

ইম্পোর্ট

import { VirtualizedList } from 'react-native';

মূল প্রপস

প্রপার্টি বিবরণ
data ডেটা সোর্স (অ্যারে বা অবজেক্ট)।
getItem (data, index) => item - ইন্ডেক্স অনুযায়ী আইটেম ফেচ করার ফাংশন।
getItemCount (data) => number - টোটাল আইটেম কাউন্ট ফাংশন।
renderItem ({ item, index }) => ReactElement - আইটেম রেন্ডারার।
keyExtractor (item, index) => string - ইউনিক কি এক্সট্রাক্টর।
initialNumToRender শুরুতে কতগুলো আইটেম রেন্ডার করবে।
windowSize ভিউপোর্টের গুণিতক (ডিফল্ট ২১) - কতটুকু এডিশনাল রেন্ডার করবে।

উদাহরণ: ১০০ আইটেম ভার্চুয়ালাইজড লিস্ট

import React from 'react';
import { SafeAreaView, View, VirtualizedList, StyleSheet, Text } from 'react-native';

const DATA = []; // খালি অ্যারে, getItem থেকে ডেটা আসবে

const getItem = (data, index) => ({
  id: index,
  title: `Item ${index + 1}`
});

const getItemCount = (data) => 100; // টোটাল ১০০ আইটেম

const Item = ({ title }) => (
  
    {title}
  
);

const VirtualizedListExample = () => (
  
     }
      keyExtractor={item => item.id.toString()}
      getItemCount={getItemCount}
      getItem={getItem}
    />
  
);

const styles = StyleSheet.create({
  item: {
    backgroundColor: '#ccc',
    height: 100,
    justifyContent: 'center',
    marginVertical: 8,
    marginHorizontal: 16,
    padding: 20
  },
  title: { fontSize: 22 }
});

export default VirtualizedListExample;

কেন VirtualizedList?

  • FlatList/SectionList আপনার কেসে ফিট না হলে (কাস্টম ডেটা স্ট্রাকচার, ইনফিনিট লোডিং, কাস্টম উইন্ডোइং)।
  • অসীম বা খুব বড় লিস্ট (১০০০০+ আইটেম) gdzie মেমরি ফুটপ্রিন্ট ছোট রাখতে হয়।
  • শুধু ভিজিবল আইটেম রেন্ডার হয়, বাকি ডোমেইন থাকে না।

সাবধানতা

  • এটি লো-লেভেল API, ভুল ব্যবহার করলে বাগ হতে পারে।
  • সাধারণ কেসে FlatList বা SectionList ব্যবহার করুন।
  • getItem এবং getItemCount পিউর ফাংশন হতে হবে (সাইড-ইফেক্ট নেই)।
  1. জাভাস্ক্রিপ্টে হোয়িস্টিং (Hoisting) ব্যাখ্যা

  2. React Native-এ SafeAreaView-এর গুরুত্ব ব্যাখ্যা

  3. React Native-এ SwitchSelector কম্পোনেন্ট ব্যবহার করা

  4. React Native-এ "Text strings must be rendered within a <Text> component" এরর সমাধান