SectionList: এটি কী, সেকশন কাঠামো এবং API React Native-এ

লেখক: IT Sectr প্রকাশিত: 2026-07-05 পড়ার সময়: 10 মিনিট

SectionList হল React Native-এর একটি কম্পোনেন্ট যা উপাদানগুলোকে ক্যাটাগরিতে গ্রুপ করে সেকশনযুক্ত তালিকা প্রদর্শনের জন্য। FlatList-এর বিপরীতে, SectionList হেডার এবং ডেটা সহ সেকশনের একটি অ্যারে গ্রহণ করে, যা বর্ণানুক্রমিক সূচক, ক্যাটালগ এবং মেনু তৈরি করতে দেয়। কম্পোনেন্টটি sticky headers সমর্থন করে — স্ক্রোল করার সময় স্থির শিরোনাম। তালিকা API সম্পর্কে আরও জানতে Meta-এর অফিসিয়াল গাইড দেখুন।

মূল বিষয়

  • SectionList VirtualizedList-এর উপর নির্মিত, হেডার সহ উপাদানগুলোকে সেকশনে গ্রুপ করার কম্পোনেন্ট
  • ডেটা কাঠামো সেকশনের একটি অ্যারে নিয়ে গঠিত, প্রতিটিতে title এবং data অ্যারে থাকে
  • Sticky headers স্ক্রোল করার সময় সেকশন হেডারগুলোকে স্ক্রিনের উপরে স্থির রাখে
  • কর্মক্ষমতা FlatList-এর ভার্চুয়ালাইজেশন মেকানিজম উত্তরাধিকার সূত্রে পায় — উইন্ডো রেন্ডারিং এবং সেল পুনঃব্যবহার
  • SectionSeparatorComponent উপাদান বিভাজক থেকে স্বাধীনভাবে সেকশনের মধ্যে বিভাজক কাস্টমাইজ করতে দেয়

SectionList কী?

SectionList হল React Native-এর একটি কম্পোনেন্ট যা যৌক্তিক সেকশনে গ্রুপকৃত ডেটা প্রদর্শনের জন্য। প্রতিটি সেকশনের একটি হেডার এবং উপাদানের তালিকা থাকে, যা বর্ণানুক্রমিক ক্রমে পরিচিতি, ক্যাটাগরি অনুযায়ী মেনু, তারিখ অনুযায়ী অর্ডারের জন্য আদর্শ। কম্পোনেন্টটি VirtualizedList-এর উপর নির্মিত এবং ভার্চুয়ালাইজেশনের সব সুবিধা গ্রহণ করে।

SectionList FlatList-এর সাথে React Native 0.43-এ চালু হয়েছিল এবং তখন থেকেই শ্রেণীবদ্ধ তালিকার জন্য মানদণ্ড। Meta (2026) অনুযায়ী, 40% React Native প্রকল্প কাঠামোবদ্ধ ডেটা সংগঠিত করতে SectionList ব্যবহার করে। FlatList-এর ভিতরে ম্যানুয়াল গ্রুপিংয়ের বিপরীতে, SectionList অন্তর্নির্মিত সেকশন সমর্থন প্রদান করে।

প্রধান ব্যবহারের ক্ষেত্র

SectionList বর্ণানুক্রমিক সূচক সহ পরিচিতি তালিকায় ব্যবহৃত হয়, যেখানে প্রতিটি অক্ষর একটি আলাদা সেকশন। ই-কমার্সে, কম্পোনেন্টটি পণ্যগুলোকে ক্যাটাগরি বা ব্র্যান্ড অনুযায়ী গ্রুপ করে। নোট অ্যাপে — তারিখ বা ট্যাগ অনুযায়ী। সেটিংস স্ক্রিনে — সেকশন অনুযায়ী (সাধারণ, নিরাপত্তা, বিজ্ঞপ্তি)।

React Native ব্যবহার গবেষণা (Meta, 2026) অনুযায়ী, SectionList 5-50টি সেকশনের সাথে সবচেয়ে কার্যকর যেখানে প্রতিটিতে 3-20টি আইটেম রয়েছে। কম সেকশন থাকলে, ListHeaderComponent-এর মাধ্যমে গ্রুপিং সহ FlatList ব্যবহার করা সহজ। বেশি সেকশন থাকলে, বিপুল সংখ্যক হেডারের কারণে কর্মক্ষমতা সমস্যা দেখা দেয়।

ডেটা কাঠামো এবং সেকশন

SectionList Data Section অবজেক্টের একটি অ্যারে গ্রহণ করে, প্রতিটিতে title (সেকশন হেডার) এবং data (উপাদানের অ্যারে) থাকে। ঐচ্ছিকভাবে, প্রতিটি সেকশনের জন্য আলাদাভাবে key এবং renderItem পাস করা যেতে পারে, সাধারণ renderItem ওভাররাইড করে।

js
const sections = [
  {
    title: 'React Native',
    data: ['FlatList', 'SectionList', 'VirtualizedList'],
  },
  {
    title: 'React',
    data: ['Hooks', 'Context', 'Suspense'],
  },
  {
    title: 'Android',
    data: ['Activity', 'Fragment', 'ViewModel'],
  },
];

renderSectionHeader হল সেকশন হেডার রেন্ডার করার ফাংশন, যা সেকশন অবজেক্ট গ্রহণ করে। renderItem হল উপাদান রেন্ডারিং ফাংশন, FlatList-এর মতো। কম্পোনেন্টটি প্রতিটি সেকশনের নিচের অংশের জন্য renderSectionFooter-ও সমর্থন করে।

js
<SectionList
  sections={sections}
  keyExtractor={(item, index) => item + index}
  renderItem={({ item }) => (
    <View style={styles.item}>
      <Text>{item}</Text>
    </View>
  )}
  renderSectionHeader={({ section }) => (
    <View style={styles.sectionHeader}>
      <Text style={styles.sectionTitle}>{section.title}</Text>
    </View>
  )}
/>

Sticky headers এবং সেকশন নেভিগেশন

Sticky headers হল SectionList-এর একটি মূল বৈশিষ্ট্য। যখন ব্যবহারকারী স্ক্রোল করে, বর্তমান সেকশনের হেডার স্ক্রিনের উপরে আটকে থাকে যতক্ষণ না সেকশনটি সম্পূর্ণভাবে স্ক্রোল হয়। এটি ব্যবহারকারীকে বর্তমান ক্যাটাগরি সম্পর্কে ধারাবাহিক প্রসঙ্গ দেয়।

স্টিকি মোড ডিফল্টভাবে সক্রিয়। এটি নিষ্ক্রিয় করতে, stickySectionHeadersEnabled={false} ব্যবহার করুন। iOS-এ, হেডারগুলো native অ্যানিমেশনের সাথে আটকে থাকে; Android-এ, JS হ্যান্ডলিংয়ের মাধ্যমে। বর্ণানুক্রমিক রেফারেন্সের জন্য, দ্রুত নেভিগেশনের জন্য অক্ষর সহ একটি সাইডবার যোগ করা সুবিধাজনক।

js
const ContactsList = () => {
  const sectionListRef = React.useRef(null);

  const scrollToSection = (index) => {
    sectionListRef.current?.scrollToLocation({
      sectionIndex: index,
      itemIndex: 0,
      viewPosition: 0,
    });
  };

  return (
    <View>
      <SectionList
        ref={sectionListRef}
        sections={sections}
        keyExtractor={(item) => item.id}
        renderItem={renderItem}
        renderSectionHeader={renderSectionHeader}
        onViewableItemsChanged={onViewableItemsChanged}
      />
    </View>
  );
};

scrollToLocation যেকোনো সেকশনে প্রোগ্রামেটিক নেভিগেশনের জন্য একটি পদ্ধতি। এটি sectionIndex, itemIndex এবং viewPosition (0 — শুরু, 0.5 — মধ্যভাগ, 1 — শেষ) গ্রহণ করে। সাইডবার বর্ণানুক্রমিক সূচকের সাথে মিলিয়ে, আপনি স্ট্যান্ডার্ড iOS পরিচিতির মতো দ্রুত নেভিগেশন বাস্তবায়ন করতে পারেন।

SectionList কর্মক্ষমতা অপ্টিমাইজেশন

SectionList অপ্টিমাইজেশন FlatList অপ্টিমাইজেশনের মতো একই নীতি অনুসরণ করে, সেকশন সম্পর্কিত অতিরিক্ত সূক্ষ্মতা সহ। প্রতিটি সেকশন হেডার একটি অতিরিক্ত View যা স্ক্রোল করার সময় রেন্ডার এবং পুনরায় রেন্ডার হয়। 50+ সেকশন থাকলে, হেডারগুলো স্ক্রোল ধীর করতে পারে।

অপ্রয়োজনীয় পুনঃরেন্ডার এড়াতে renderSectionHeader এবং renderItem-এর জন্য React.memo ব্যবহার করুন। যদি সেকশনগুলো গতিশীলভাবে না বদলায়, সেকশন অ্যারের জন্য useMemo বিবেচনা করুন। খুব বড় তালিকার জন্য, হেডার এবং উপাদানের নির্দিষ্ট উচ্চতা নির্ধারণ করে SectionList-কে getItemLayout-এর সাথে সংযুক্ত করুন।

অপ্টিমাইজেশন কৌশলবিবরণপ্রভাব
React.memoহেডার এবং উপাদানের কম্পোনেন্টের মেমোইজেশনস্ক্রোল করার সময় পুনঃরেন্ডারের সংখ্যা হ্রাস করে
getItemLayoutহেডার + উপাদানের নির্দিষ্ট উচ্চতাপরিমাপ বাদ দেয়, সূচকে স্ক্রোল গতি বাড়ায়
maxToRenderPerBatchব্যাচে উপাদান সীমিত করাদ্রুত স্ক্রোলের সময় পিছিয়ে যাওয়া প্রতিরোধ করে
windowSizeবড় তালিকার জন্য 5-10 এ হ্রাস করাএকসঙ্গে রেন্ডার করা উপাদানের সংখ্যা কমায়

SectionList বনাম FlatList: কখন কী বেছে নেবেন

SectionList এবং FlatList-এর মধ্যে পছন্দ ডেটা কাঠামোর উপর নির্ভর করে। যদি ডেটা একটি সমতল অ্যারে হয় — FlatList ব্যবহার করুন। যদি ডেটা স্বাভাবিকভাবে হেডার সহ ক্যাটাগরিতে গ্রুপিত হয় — SectionList ব্যবহার করুন। একক সেকশনের জন্য SectionList ব্যবহার করবেন না — FlatList আরও দক্ষতার সাথে কাজ করবে।

একই সংখ্যক উপাদানের সাথে কর্মক্ষমতার পার্থক্য ন্যূনতম। SectionList হেডার রেন্ডার করতে ওভারহেড যোগ করে, কিন্তু এই ওভারহেড ন্যায্য যখন হেডারগুলো অর্থপূর্ণ হয়। যদি হেডারের প্রয়োজন না হয় — সেকশন অনুকরণের জন্য ListHeaderComponent সহ FlatList দ্রুততর হবে।

নির্বাচনের মানদণ্ড

SectionList ব্যবহার করুন যখন: ডেটা ডিফল্টভাবে গ্রুপিত (অক্ষর অনুযায়ী পরিচিতি), sticky headers প্রয়োজন, সেকশন হেডারে ইন্টারঅ্যাকটিভ উপাদান থাকে (বাটন, চেকবক্স)। FlatList ব্যবহার করুন যখন: ডেটা সমতল, গ্রুপিং গতিশীলভাবে বদলায়, 50টির বেশি ক্যাটাগরি থাকে এবং হেডারগুলো একই রকম।

SectionList বাস্তবায়নের উদাহরণ

SectionList বর্ণানুক্রমিক সূচক সহ একটি ক্লাসিক ব্যবহারের ক্ষেত্র। বাস্তবায়নে অক্ষর সহ একটি সাইডবার এবং সেকশনে যাওয়ার জন্য scrollToLocation অন্তর্ভুক্ত। নিচে বর্ণানুক্রমিক নেভিগেশন সহ পরিচিতি তালিকার সম্পূর্ণ বাস্তবায়ন দেওয়া হল।

js
const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');

const AlphabetContacts = () => {
  const ref = React.useRef(null);

  const sections = React.useMemo(() =>
    ALPHABET.map(letter => ({
      title: letter,
      data: contacts.filter(c => c.name.startsWith(letter)),
    })).filter(s => s.data.length > 0),
  []);

  return (
    <View style={styles.container}>
      <SectionList
        ref={ref}
        sections={sections}
        keyExtractor={item => item.id}
        renderItem={renderContact}
        renderSectionHeader={renderHeader}
        getItemLayout={getItemLayout}
      />
      <View style={styles.sidebar}>
        {ALPHABET.map(letter => (
          <Text
            key={letter}
            onPress={() => scrollToSection(letter)}
          >{letter}</Text>
        ))}
      </View>
    </View>
  );
};

গুরুত্বপূর্ণ: গতিশীলভাবে সেকশন ফিল্টার করার সময়, অ্যারে স্থিতিশীল করতে useMemo ব্যবহার করুন। মেমোইজেশন ছাড়া, SectionList প্রতিটি ফিল্টার পরিবর্তনে সব কোষ পুনরায় তৈরি করবে, যা স্ক্রোল অবস্থান এবং নেস্টেড কম্পোনেন্টের অবস্থা হারাবে।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

SectionList কি গতিশীল সেকশনের সাথে ব্যবহার করা যাবে?

হ্যাঁ, SectionList গতিশীল সেকশন পরিবর্তন সমর্থন করে। সেকশনের অ্যারে পরিবর্তন হলে, কম্পোনেন্ট শুধুমাত্র পরিবর্তিত সেকশনগুলো পুনরায় রেন্ডার করে। স্থিতিশীল পরিচালনার জন্য, প্রতিটি সেকশনের জন্য key ব্যবহার করুন এবং কম্পোনেন্টগুলো React.memo-তে মোড়ান।

SectionList-এ খালি সেকশন কীভাবে লুকাবেন?

পাস করার আগে সেকশন অ্যারে ফিল্টার করুন: খালি data সহ সেকশন সরান। যদি ডেটা API থেকে আসে, useMemo-তে ফিল্টারিং পরিচালনা করুন। পুরো তালিকার খালি অবস্থার জন্য, ListEmptyComponent ব্যবহার করুন।

Android-এ sticky headers কাজ করে না কেন?

Android-এ Sticky headers ডিফল্টভাবে সক্রিয়, কিন্তু nestedScrollEnabled-এর সাথে বিরোধ হলে কাজ নাও করতে পারে। নিশ্চিত করুন যে SectionList ScrollView-এর ভিতরে নেস্টেড নয়। Android 12+-এ, sticky headers native পদ্ধতিতে কাজ করে; পুরনো সংস্করণে, JS-এর মাধ্যমে।

স্টিকি হেডার ট্রানজিশন অ্যানিমেশন কীভাবে কাস্টমাইজ করবেন?

SectionList অন্তর্নির্মিত স্টিকি হেডার ট্রানজিশন অ্যানিমেশন প্রদান করে না। কাস্টম অ্যানিমেশনের জন্য, onViewableItemsChanged ট্র্যাক করুন এবং Animated API বা react-native-reanimated ব্যবহার করে হেডার পরিবর্তন অ্যানিমেট করুন।

অতিরিক্ত সেকশন কি SectionList-এর কর্মক্ষমতা প্রভাবিত করে?

হ্যাঁ, প্রতিটি সেকশন DOM-এ একটি হেডার যোগ করে। 100+ সেকশনের সাথে, বিপুল সংখ্যক হেডারের কারণে SectionList-এর কর্মক্ষমতা কমে যায়। সমাধান: ডেটা 10-20টি যৌক্তিক সেকশনে গ্রুপ করুন বা কাস্টম গ্রুপিং সহ FlatList ব্যবহার করুন।

সারাংশ

  • SectionList React Native-এর একটি কম্পোনেন্ট যা হেডার এবং sticky headers সহ সেকশনে গ্রুপকৃত ডেটা প্রদর্শন করে
  • সেকশন কাঠামো title (হেডার) এবং data (উপাদানের অ্যারে) নিয়ে গঠিত, sections প্রপের মাধ্যমে পাস করা হয়
  • Sticky headers স্ক্রোল করার সময় বর্তমান সেকশন হেডার স্থির রাখে, দীর্ঘ তালিকায় নেভিগেশন উন্নত করে
  • অপ্টিমাইজেশন হেডারের জন্য React.memo, সেকশনের জন্য useMemo এবং নির্দিষ্ট উচ্চতার জন্য getItemLayout প্রয়োজন
  • scrollToLocation সূচক দ্বারা যেকোনো সেকশনে প্রোগ্রামেটিক নেভিগেশন প্রদান করে
  • SectionList বনাম FlatList: SectionList হেডার সহ শ্রেণীবদ্ধ ডেটার জন্য, FlatList সমতল অ্যারের জন্য
  • বর্ণানুক্রমিক সূচক scrollToLocation-এর মাধ্যমে অক্ষর-ভিত্তিক দ্রুত নেভিগেশনের জন্য SectionList-এর সাথে মিলিত হয়

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন