React'dagi use: Resurs Huki: To'liq Qo'llanma | MLOG | MLOG}> {/* Bu ID mavjud emas va xatolikka olib keladi deb taxmin qilinadi */} ); } export default App;

Ushbu misolda, agar fetchUser funksiyasi xatolik yuzaga keltirsa (masalan, 404 statusi tufayli), ErrorBoundary komponenti xatoni ushlaydi va zaxira interfeysni ko'rsatadi. Zaxira interfeys har qanday React komponenti bo'lishi mumkin, masalan, xatolik xabari yoki qayta urinish tugmasi.

use: bilan ilg'or texnikalar

1. Resurslarni keshlashtirish

Ortiqcha so'rovlarni oldini olish uchun siz resursni (Promise) keshlashtirishingiz va uni bir nechta komponentlar yoki renderlar bo'ylab qayta ishlatishingiz mumkin. Bu optimallashtirish samaradorlik uchun juda muhim.

            
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(`Foydalanuvchini yuklashda xatolik: ${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}

Telefon: {user.phone}

); } function App() { return ( Foydalanuvchi ma'lumotlari yuklanmoqda...
}> ); } export default App;

Ushbu misolda:

2. Server Komponentlari bilan use: dan foydalanish

use: huki ayniqsa React Server Komponentlarida foydalidir, bu yerda ma'lumotlarni yuklash to'g'ridan-to'g'ri serverda amalga oshirilishi mumkin. Bu sahifaning dastlabki yuklanishini tezlashtiradi va SEO'ni yaxshilaydi.

Next.js Server Komponenti bilan misol

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

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

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

  return (
    

{user.name}

Email: {user.email}

Telefon: {user.phone}

); }

Ushbu Next.js server komponentida fetchUser funksiyasi serverda foydalanuvchi ma'lumotlarini oladi. use: huki ma'lumotlar mavjud bo'lguncha komponentni to'xtatib turadi, bu esa samarali server tomonida renderlash imkonini beradi.

use: uchun eng yaxshi amaliyotlar

Haqiqiy hayotdan misollar

1. E-tijorat mahsulotlari ro'yxati

Mahsulotlar ro'yxatini ko'rsatadigan e-tijorat veb-saytini tasavvur qiling. Har bir mahsulot kartasi mahsulot tafsilotlarini olish uchun use: dan foydalanishi mumkin:

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

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

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

  return (
    

{product.name}

{product.description}

Narxi: ${product.price}

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

Bu yondashuv har bir mahsulot kartasining mustaqil ravishda yuklanishini ta'minlaydi va umumiy sahifa renderlanishi sekin yuklanadigan mahsulotlar tufayli bloklanmaydi. Foydalanuvchi har bir mahsulot uchun alohida yuklanish indikatorlarini ko'radi, bu esa yaxshiroq tajribani ta'minlaydi.

2. Ijtimoiy tarmoq lentasi

Ijtimoiy tarmoq lentasi foydalanuvchi profillarini, postlarni va sharhlarni yuklash uchun use: dan foydalanishi mumkin:

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

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

async function fetchComments(postId) {
  const response = await fetch(`/api/posts/${postId}/comments`);
  if (!response.ok) {
    throw new Error(`Sharhlarni yuklashda xatolik: ${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}

Sharhlar yuklanmoqda...
}>
); } export default Post;

Ushbu misolda post tarkibi va sharhlarni mustaqil ravishda yuklash uchun ichki o'rnatilgan Suspense chegaralari ishlatiladi. Foydalanuvchi sharhlar hali yuklanayotgan paytda post tarkibini ko'rishi mumkin.

Umumiy xatolar va ulardan qanday qochish kerak

use: ga alternativlar

use: muhim afzalliklarni taklif qilsa-da, React'da ma'lumotlarni yuklashning muqobil yondashuvlari mavjud:

Ushbu alternativlar o'rtasidagi tanlov ilovangizning murakkabligiga va sizning maxsus talablaringizga bog'liq. Oddiy ma'lumotlarni yuklash stsenariylari uchun use: ajoyib variant bo'lishi mumkin. Murakkabroq stsenariylar uchun useSWR yoki React Query kabi kutubxonalar mosroq bo'lishi mumkin.

Xulosa

React'dagi use: huki resurslarni yuklash va ma'lumotlarni olishni boshqarish uchun kuchli va deklarativ usulni taqdim etadi. use: ni Suspense bilan birgalikda qo'llash orqali siz komponent mantig'ini soddalashtirishingiz, foydalanuvchi tajribasini yaxshilashingiz va samaradorlikni optimallashtirishingiz mumkin. Ushbu qo'llanma React ilovalaringizda use: dan foydalanishning asoslari, ilg'or texnikalari va eng yaxshi amaliyotlarini qamrab oldi. Ushbu ko'rsatmalarga rioya qilish orqali siz asinxron operatsiyalarni samarali boshqarishingiz va mustahkam, samarali va foydalanuvchilar uchun qulay ilovalarni yaratishingiz mumkin. React rivojlanishda davom etar ekan, use: kabi texnikalarni o'zlashtirish oldinda bo'lish va ajoyib foydalanuvchi tajribalarini taqdim etish uchun zarur bo'lib qoladi.

Manbalar