React નો use: Resource Hook: એક વિસ્તૃત માર્ગદર્શિકા | MLOG | MLOG}> {/* Assuming this ID doesn't exist and will cause an error */} ); } export default App;

આ ઉદાહરણમાં, જો fetchUser ફંક્શન એરર ફેંકે છે (દા.ત., 404 સ્ટેટસને કારણે), તો ErrorBoundary કમ્પોનન્ટ એરરને પકડી લેશે અને ફોલબેક UI પ્રદર્શિત કરશે. ફોલબેક કોઈપણ React કમ્પોનન્ટ હોઈ શકે છે, જેમ કે એરર સંદેશ અથવા ફરી પ્રયાસ કરવા માટેનું બટન.

use: સાથે અદ્યતન તકનીકો

1. રિસોર્સ કેશિંગ (Caching)

વારંવાર ફેચિંગ ટાળવા માટે, તમે રિસોર્સ (Promise) ને કેશ કરી શકો છો અને તેને બહુવિધ કમ્પોનન્ટ્સ અથવા રેન્ડર્સમાં ફરીથી ઉપયોગ કરી શકો છો. આ ઓપ્ટિમાઇઝેશન પર્ફોર્મન્સ માટે નિર્ણાયક છે.

            
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;

આ ઉદાહરણમાં:

2. સર્વર કમ્પોનન્ટ્સ સાથે use: નો ઉપયોગ

use: હૂક ખાસ કરીને React સર્વર કમ્પોનન્ટ્સમાં ઉપયોગી છે, જ્યાં ડેટા ફેચિંગ સીધું સર્વર પર કરી શકાય છે. આના પરિણામે ઝડપી પ્રારંભિક પેજ લોડ અને સુધારેલ 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: માટે શ્રેષ્ઠ પદ્ધતિઓ

વાસ્તવિક-દુનિયાના ઉદાહરણો

1. ઈ-કોમર્સ પ્રોડક્ટ લિસ્ટિંગ

કલ્પના કરો કે એક ઈ-કોમર્સ વેબસાઇટ પ્રોડક્ટ લિસ્ટિંગ પ્રદર્શિત કરી રહી છે. દરેક પ્રોડક્ટ કાર્ડ પ્રોડક્ટની વિગતો મેળવવા માટે 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;

આ અભિગમ સુનિશ્ચિત કરે છે કે દરેક પ્રોડક્ટ કાર્ડ સ્વતંત્ર રીતે લોડ થાય છે, અને ધીમા-લોડિંગ પ્રોડક્ટ્સ દ્વારા સમગ્ર પેજનું રેન્ડરિંગ અવરોધિત થતું નથી. યુઝર દરેક પ્રોડક્ટ માટે વ્યક્તિગત લોડિંગ સૂચકો જુએ છે, જે વધુ સારો અનુભવ પ્રદાન કરે છે.

2. સોશિયલ મીડિયા ફીડ

એક સોશિયલ મીડિયા ફીડ યુઝર પ્રોફાઇલ્સ, પોસ્ટ્સ અને કોમેન્ટ્સ મેળવવા માટે 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;

આ ઉદાહરણ પોસ્ટ કન્ટેન્ટ અને કોમેન્ટ્સને સ્વતંત્ર રીતે લોડ કરવા માટે નેસ્ટેડ Suspense બાઉન્ડ્રીઝનો ઉપયોગ કરે છે. યુઝર પોસ્ટ કન્ટેન્ટ જોઈ શકે છે જ્યારે કોમેન્ટ્સ હજુ લોડ થઈ રહી હોય.

સામાન્ય ભૂલો અને તેને કેવી રીતે ટાળવી

use: ના વિકલ્પો

જ્યારે use: નોંધપાત્ર ફાયદાઓ પ્રદાન કરે છે, ત્યારે React માં ડેટા ફેચિંગ માટે વૈકલ્પિક અભિગમો પણ છે:

આ વિકલ્પો વચ્ચેની પસંદગી તમારી એપ્લિકેશનની જટિલતા અને તમારી ચોક્કસ જરૂરિયાતો પર આધાર રાખે છે. સરળ ડેટા ફેચિંગના કિસ્સામાં, use: એક ઉત્તમ વિકલ્પ હોઈ શકે છે. વધુ જટિલ કિસ્સાઓમાં, useSWR અથવા React Query જેવી લાઇબ્રેરીઓ વધુ યોગ્ય હોઈ શકે છે.

નિષ્કર્ષ

React માં use: હૂક રિસોર્સ લોડિંગ અને ડેટા ફેચિંગને હેન્ડલ કરવા માટે એક શક્તિશાળી અને ડિક્લેરેટિવ રીત પ્રદાન કરે છે. Suspense સાથે use: નો ઉપયોગ કરીને, તમે તમારા કમ્પોનન્ટ લોજિકને સરળ બનાવી શકો છો, યુઝર અનુભવ સુધારી શકો છો અને પર્ફોર્મન્સને ઓપ્ટિમાઇઝ કરી શકો છો. આ માર્ગદર્શિકામાં તમારી React એપ્લિકેશન્સમાં use: નો ઉપયોગ કરવા માટેના મૂળભૂત સિદ્ધાંતો, અદ્યતન તકનીકો અને શ્રેષ્ઠ પદ્ધતિઓનો સમાવેશ કરવામાં આવ્યો છે. આ માર્ગદર્શિકાઓનું પાલન કરીને, તમે અસિંક્રોનસ ઓપરેશન્સને અસરકારક રીતે મેનેજ કરી શકો છો અને મજબૂત, પર્ફોર્મન્ટ અને યુઝર-ફ્રેન્ડલી એપ્લિકેશન્સ બનાવી શકો છો. જેમ જેમ React વિકસિત થતું જાય છે, તેમ use: જેવી તકનીકોમાં નિપુણતા મેળવવી આગળ રહેવા અને અસાધારણ યુઝર અનુભવો પ્રદાન કરવા માટે આવશ્યક બને છે.

સંસાધનો