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

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

SectionList হলো একটি পারফরম্যান্স-অপ্টিমাইজড লিস্ট কম্পোনেন্ট যা ডেটাকে সেকশন (বিভাগ) অনুযায়ী রেন্ডার করে। বড় ডেটাসেটের জন্য FlatList-এর চেয়ে ভালো।

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

<SectionList
  sections={dataArray}
  renderItem={renderItemFunc}
  renderSectionHeader={headerFunc}
  keyExtractor={keyFunc}
/>

ইম্পোর্ট

import { SectionList } from 'react-native';

মূল প্রপস

প্রপার্টি বিবরণ
sections রেন্ডার করার ডেটা অ্যারে (প্রতিটি সেকশনে title এবং data থাকে)।
renderItem প্রতিটি আইটেম রেন্ডার করার ফাংশন। {item, index, section, separators} পায়।
renderSectionHeader সেকশন হেডার রেন্ডার করার ফাংশন। iOS-এ স্টিকি (sticky) হয়।
keyExtractor ইউনিক কি বানানোর ফাংশন (ডিফল্ট: ইন্ডেক্স)।
stickySectionHeadersEnabled true দিলে হেডার স্ক্রোল সময় টপে আটকে থাকে।
ListHeaderComponent পুরো লিস্টের উপরে কম্পোনেন্ট।
ListFooterComponent পুরো লিস্টের নিচে কম্পোনেন্ট।
refreshing পুল-টু-রিফ্রেশ ইন্ডিকেটর।

উদাহরণ ১: বেসিক SectionList

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

export default class App extends React.Component {
  constructor() {
    super();
    this.state = {
      data: [
        { title: 'JavaScript Frameworks', data: ['Angular', 'ReactJS', 'VueJS', 'ReactNative'] },
        { title: 'PHP Frameworks', data: ['Laravel', 'CodeIgniter', 'CakePHP', 'Symfony'] }
      ]
    };
  }

  renderItem = ({ item }) => (
    
      {item}
    
  );

  render() {
    return (
      
         index.toString()}
          renderSectionHeader={({ section: { title } }) => (
            {title}
          )}
        />
      
    );
  }
}

const styles = StyleSheet.create({
  container: { flex: 1, marginTop: 20, marginHorizontal: 16 },
  item: { backgroundColor: '#ccc2ff', padding: 20, marginVertical: 8 },
  header: { fontSize: 22, fontWeight: 'bold', backgroundColor: '#fff', paddingVertical: 10 }
});

উদাহরণ ২: Sticky Section Headers

<SectionList
  stickySectionHeadersEnabled={true}
  sections={this.state.data}
  renderItem={this.renderItem}
  keyExtractor={(item, index) => index.toString()}
  renderSectionHeader={({ section: { title } }) => (
    {title}
  )}
/>

stickySectionHeadersEnabled={true} দিলে স্ক্রোল করার সময় সেকশন হেডার টপে আটকে থাকবে, পরবর্তী হেডার আসার আগে পর্যন্ত।

কখন SectionList ব্যবহার করবেন?

  • ডেটা ক্যাটাগরি/গ্রুপ অনুযায়ী বণ্টন করা থাকলে (যেমন: কন্টাক্ট লিস্ট A-Z, ইকমার্স ক্যাটাগরি)।
  • হেডার/ফুটার সাপোর্ট দরকার হলে।
  • পারফরম্যান্স খুব জরুরি হলে (ভার্চুয়ালাইজড রেন্ডারিং)।
  1. আইফোন অ্যাপ লাইব্রেরি কী এবং কীভাবে ব্যবহার করবেন

  2. জিমেইলে Auto-Advance ফিচার কি এবং কিভাবে ব্যবহার করবেন

  3. Microsoft Edge Bar কী এবং কীভাবে ব্যবহার করবেন?

  4. এক্সেলে PI ফাংশন ব্যবহারের পদ্ধতি