রিঅ্যাক্ট-এর use: রিসোর্স হুক: একটি বিস্তারিত নির্দেশিকা | MLOG | MLOG}> {/* Assuming this ID doesn't exist and will cause an error */} ); } export default App;

এই উদাহরণে, যদি fetchUser ফাংশনটি একটি ত্রুটি থ্রো করে (যেমন, একটি 404 স্ট্যাটাসের কারণে), ErrorBoundary কম্পোনেন্টটি ত্রুটিটি ধরবে এবং ফলব্যাক UI প্রদর্শন করবে। ফলব্যাক যেকোনো রিঅ্যাক্ট কম্পোনেন্ট হতে পারে, যেমন একটি ত্রুটি বার্তা বা একটি রিট্রাই বাটন।

use:-এর সাথে উন্নত কৌশল

১. রিসোর্স ক্যাশিং

অপ্রয়োজনীয় ফেচিং এড়াতে, আপনি রিসোর্স (প্রমিজ) ক্যাশ করতে পারেন এবং একাধিক কম্পোনেন্ট বা রেন্ডারে এটি পুনরায় ব্যবহার করতে পারেন। এই অপটিমাইজেশন পারফরম্যান্সের জন্য অত্যন্ত গুরুত্বপূর্ণ।

            
import React, { Suspense, useRef } from 'react';

const resourceCache = new Map();

async function fetchUser(id) {
  const response = await fetch(`https://jsonplaceholder.typicode.com/users/${id}`);
  if (!response.ok) {
    throw new Error(`Failed to fetch user: ${response.status}`);
  }
  return response.json();
}

function getUserResource(userId) {
  if (!resourceCache.has(userId)) {
    resourceCache.set(userId, {
      read() {
        if (!this.promise) {
          this.promise = fetchUser(userId);
        }
        if (this.result) {
          return this.result;
        }
        throw this.promise;
      }
    });
  }
  return resourceCache.get(userId);
}

function UserProfile({ userId }) {
  const resource = getUserResource(userId);
  const user = resource.read();

  return (
    

{user.name}

Email: {user.email}

Phone: {user.phone}

); } function App() { return ( Loading user data...
}> ); } export default App;

এই উদাহরণে:

২. সার্ভার কম্পোনেন্টের সাথে use: ব্যবহার করা

use: হুক রিঅ্যাক্ট সার্ভার কম্পোনেন্টে বিশেষভাবে কার্যকর, যেখানে ডেটা ফেচিং সরাসরি সার্ভারে করা যেতে পারে। এর ফলে প্রাথমিক পেজ লোড দ্রুত হয় এবং SEO উন্নত হয়।

Next.js সার্ভার কম্পোনেন্টের সাথে উদাহরণ

            
// app/user/[id]/page.jsx (Server Component in Next.js)
import React from 'react';

async function fetchUser(id) {
  const response = await fetch(`https://jsonplaceholder.typicode.com/users/${id}`);
  if (!response.ok) {
    throw new Error(`Failed to fetch user: ${response.status}`);
  }
  return response.json();
}

export default async function UserPage({ params }) {
  const user = React.use(fetchUser(params.id));

  return (
    

{user.name}

Email: {user.email}

Phone: {user.phone}

); }

এই Next.js সার্ভার কম্পোনেন্টে, fetchUser ফাংশনটি সার্ভারে ব্যবহারকারীর ডেটা ফেচ করে। use: হুক ডেটা উপলব্ধ না হওয়া পর্যন্ত কম্পোনেন্টটিকে স্থগিত করে, যা কার্যকর সার্ভার-সাইড রেন্ডারিংয়ের অনুমতি দেয়।

use:-এর জন্য সেরা অনুশীলন

বাস্তব-বিশ্বের উদাহরণ

১. ই-কমার্স পণ্য তালিকা

একটি ই-কমার্স ওয়েবসাইটের কথা ভাবুন যা পণ্যের তালিকা প্রদর্শন করে। প্রতিটি পণ্য কার্ড পণ্যের বিবরণ ফেচ করতে use: ব্যবহার করতে পারে:

            
// ProductCard.jsx
import React, { Suspense } from 'react';

async function fetchProduct(productId) {
  const response = await fetch(`/api/products/${productId}`);
  if (!response.ok) {
    throw new Error(`Failed to fetch product: ${response.status}`);
  }
  return response.json();
}

function ProductCard({ productId }) {
  const product = React.use(fetchProduct(productId));

  return (
    

{product.name}

{product.description}

Price: ${product.price}

); } function ProductList({ productIds }) { return (
{productIds.map((productId) => ( Loading product...
}> ))}
); } export default ProductList;

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

২. সোশ্যাল মিডিয়া ফিড

একটি সোশ্যাল মিডিয়া ফিড ব্যবহারকারীর প্রোফাইল, পোস্ট এবং মন্তব্য ফেচ করতে use: ব্যবহার করতে পারে:

            
// Post.jsx
import React, { Suspense } from 'react';

async function fetchPost(postId) {
  const response = await fetch(`/api/posts/${postId}`);
  if (!response.ok) {
    throw new Error(`Failed to fetch post: ${response.status}`);
  }
  return response.json();
}

async function fetchComments(postId) {
  const response = await fetch(`/api/posts/${postId}/comments`);
  if (!response.ok) {
    throw new Error(`Failed to fetch comments: ${response.status}`);
  }
  return response.json();
}

function Comments({ postId }) {
  const comments = React.use(fetchComments(postId));

  return (
    
    {comments.map((comment) => (
  • {comment.text}
  • ))}
); } function Post({ postId }) { const post = React.use(fetchPost(postId)); return (

{post.title}

{post.content}

Loading comments...
}>
); } export default Post;

এই উদাহরণটি পোস্টের বিষয়বস্তু এবং মন্তব্যগুলি স্বাধীনভাবে লোড করার জন্য নেস্টেড সাসপেন্স বাউন্ডারি ব্যবহার করে। মন্তব্যগুলি লোড হওয়ার সময়ও ব্যবহারকারী পোস্টের বিষয়বস্তু দেখতে পারে।

সাধারণ ভুল এবং সেগুলি এড়ানোর উপায়

use:-এর বিকল্প

যদিও use: উল্লেখযোগ্য সুবিধা প্রদান করে, রিঅ্যাক্ট-এ ডেটা ফেচিংয়ের জন্য বিকল্প পদ্ধতিও রয়েছে:

এই বিকল্পগুলির মধ্যে পছন্দটি আপনার অ্যাপ্লিকেশনের জটিলতা এবং আপনার নির্দিষ্ট প্রয়োজনীয়তার উপর নির্ভর করে। সহজ ডেটা ফেচিংয়ের ক্ষেত্রে, use: একটি দুর্দান্ত বিকল্প হতে পারে। আরও জটিল ক্ষেত্রে, useSWR বা রিঅ্যাক্ট কোয়েরির মতো লাইব্রেরিগুলি আরও উপযুক্ত হতে পারে।

উপসংহার

রিঅ্যাক্ট-এর use: হুক রিসোর্স লোডিং এবং ডেটা ফেচিং পরিচালনা করার একটি শক্তিশালী এবং ডিক্লারেটিভ উপায় সরবরাহ করে। সাসপেন্স-এর সাথে use: ব্যবহার করে, আপনি আপনার কম্পোনেন্টের লজিক সহজ করতে, ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে এবং পারফরম্যান্স অপটিমাইজ করতে পারেন। এই নির্দেশিকাটি আপনার রিঅ্যাক্ট অ্যাপ্লিকেশনগুলিতে use: ব্যবহারের মৌলিক বিষয়াবলী, উন্নত কৌশল এবং সেরা অনুশীলনগুলি কভার করেছে। এই নির্দেশিকাগুলি অনুসরণ করে, আপনি কার্যকরভাবে অ্যাসিঙ্ক্রোনাস অপারেশনগুলি পরিচালনা করতে এবং শক্তিশালী, পারফরম্যান্ট এবং ব্যবহারকারী-বান্ধব অ্যাপ্লিকেশন তৈরি করতে পারেন। রিঅ্যাক্ট যেমন বিকশিত হতে থাকবে, use:-এর মতো কৌশলগুলিতে দক্ষতা অর্জন করা এগিয়ে থাকার এবং ব্যতিক্রমী ব্যবহারকারীর অভিজ্ঞতা প্রদানের জন্য অপরিহার্য হয়ে উঠবে।

রিসোর্স