Pagination ও Infinite Scroll
📄 React Native + Backend Connectivity: Pagination ও Infinite Scroll (TypeScript)
এই টিউটোরিয়ালে আমরা দেখব কিভাবে **React Native (File-based) অ্যাপে Backend API থেকে ডেটা লোড করা যায়** এবং তা **Pagination ও Infinite Scroll** এর মাধ্যমে সুন্দরভাবে প্রদর্শন করা যায়। আমরা **TypeScript** ব্যবহার করব। এটি বিশেষভাবে শিক্ষার্থীদের জন্য সহজ ও বোধগম্য হবে।
📌 ১. API থেকে ডেটা লোড করা
প্রথমে আমরা একটি ফাংশন লিখব যেটি API থেকে ডেটা আনবে। আমরা ধরছি আমাদের API `https://example.com/posts?page=1&limit=10` আকারের Pagination সাপোর্ট করে।
type Post = {
id: number;
title: string;
body: string;
};
const fetchPosts = async (page: number, limit: number = 10): Promise<Post[]> => {
const response = await fetch(`https://example.com/posts?page=${page}&limit=${limit}`);
const data = await response.json();
return data;
};
📌 ২. Pagination Setup
Pagination এর জন্য আমরা state ব্যবহার করব: `posts`, `page`, `loading`, এবং `hasMore`।
const [posts, setPosts] = useState<Post[]>([]);
const [page, setPage] = useState(1);
const [loading, setLoading] = useState(false);
const [hasMore, setHasMore] = useState(true);
const loadPosts = async () => {
if (loading || !hasMore) return;
setLoading(true);
const newPosts = await fetchPosts(page);
setPosts([...posts, ...newPosts]);
setHasMore(newPosts.length > 0);
setPage(page + 1);
setLoading(false);
};
📌 ৩. FlatList & Infinite Scroll
আমরা FlatList ব্যবহার করব ডেটা প্রদর্শনের জন্য এবং `onEndReached` দিয়ে Infinite Scroll ইমপ্লিমেন্ট করব।
import { FlatList, Text, View, ActivityIndicator } from 'react-native';
return (
<FlatList
data={posts}
keyExtractor={(item) => item.id.toString()}
renderItem={({ item }) => (
<View className="p-4 border-b border-teal-200">
<Text className="text-lg font-semibold text-teal-700">{item.title}</Text>
<Text className="text-gray-700">{item.body}</Text>
</View>
)}
onEndReached={loadPosts}
onEndReachedThreshold={0.5}
ListFooterComponent={loading ? <ActivityIndicator size="large" color="teal" /> : null}
/>
);
📌 ৪. Output Example
উপরের কোড ব্যবহার করলে অ্যাপে এই রকম UI দেখা যাবে:
- প্রথমে প্রথম ১০টি পোস্ট লোড হবে।
- নিচে স্ক্রল করলে আরও পোস্ট স্বয়ংক্রিয়ভাবে লোড হবে।
- লোডিং চলাকালীন ActivityIndicator দেখাবে।
Title 1
Lorem ipsum dolor sit amet...
Title 2
Consectetur adipiscing elit...
Loading more...
✨ Tips & Best Practices
- FlatList-এর
keyExtractorব্যবহার করা অবশ্যক, এটি performance বাড়ায়। - Heavy computation বা large data প্রসেস করলে background thread ব্যবহার করুন।
- API pagination ব্যবহার করে network request কমানো যায়।
- ActivityIndicator দিয়ে user experience সুন্দর করুন।
- TypeScript ব্যবহার করে type safety নিশ্চিত করুন।
✔ এই টিউটোরিয়াল ফলো করলে আপনি React Native অ্যাপে **Backend Connectivity, Pagination & Infinite Scroll** সুন্দরভাবে ইমপ্লিমেন্ট করতে পারবেন।