React Suspense'i ressursside koordineerimine: mitme ressursi laadimise haldamise meisterdamine | MLOG | MLOG

Eelised:

Puudused:

2. Järjestikune laadimine sõltuvustega

Kui ressursid on üksteisest sõltuvad, peate need järjestikku laadima. Suspense võimaldab teil seda voogu orkestreerida, pesastades komponente, mis hangivad sõltuvad ressursid.

Näide: laadige kõigepealt kasutaja andmed ja seejärel kasutage kasutaja ID-d nende postituste hankimiseks.

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

const userResource = fetchData('/api/user');

function UserPosts({ userId }) {
  const postsResource = fetchData(`/api/posts?userId=${userId}`);
  const posts = postsResource.read();

  return (
    
    {posts.map((post) => (
  • {post.title}
  • ))}
); } function UserProfile() { const user = userResource.read(); return (

{user.name}

{user.bio}

Posts

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

Eelised:

Puudused:

3. Paralleelse ja järjestikuse laadimise kombineerimine

Paljudes stsenaariumides saate jõudluse optimeerimiseks kombineerida nii paralleelset kui ka järjestikku laadimist. Laadige sõltumatud ressursid paralleelselt ja seejärel laadige sõltuvad ressursid järjestikku pärast seda, kui sõltumatud on laetud.

Näide: laadige kasutaja andmed ja hiljutine tegevus paralleelselt. Seejärel, pärast kasutaja andmete laadimist, hankige kasutaja postitused.

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

const userResource = fetchData('/api/user');
const activityResource = fetchData('/api/activity');

function UserPosts({ userId }) {
  const postsResource = fetchData(`/api/posts?userId=${userId}`);
  const posts = postsResource.read();

  return (
    
    {posts.map((post) => (
  • {post.title}
  • ))}
); } function UserProfile() { const user = userResource.read(); const activity = activityResource.read(); return (

{user.name}

{user.bio}

Last activity: {activity.date}

Posts

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

Selles näites hangitakse `userResource` ja `activityResource` paralleelselt. Kui kasutaja andmed on saadaval, renderdatakse `UserPosts` komponent, käivitades kasutaja postituste hankimise.

Eelised:

Puudused:

4. React Contexti kasutamine ressursside jagamiseks

React Contexti saab kasutada ressursside jagamiseks komponentide vahel ja sama andmete mitmekordse hankimise vältimiseks. See on eriti kasulik, kui mitu komponenti vajavad juurdepääsu samale ressursile.

Näide:

            
import React, { createContext, useContext, Suspense } from 'react';
import fetchData from './fetchData';

const UserContext = createContext(null);

function UserProvider({ children }) {
  const userResource = fetchData('/api/user');

  return (
    
      {children}
    
  );
}

function UserProfile() {
  const userResource = useContext(UserContext);
  const user = userResource.read();

  return (
    

{user.name}

{user.bio}

); } function UserAvatar() { const userResource = useContext(UserContext); const user = userResource.read(); return ( {user.name} ); } function App() { return ( Loading user profile...
}> ); } export default App;

Selles näites hangib `UserProvider` kasutajaandmed ja pakub need kõigile oma lastele `UserContext` kaudu. Nii `UserProfile` kui ka `UserAvatar` komponendid saavad sama kasutajaandmete juurde pääseda ilma neid uuesti hankimata.

Eelised:

Puudused:

5. Tõrkepiirid vastupidavaks tõrkete käitlemiseks

Suspense töötab hästi koos tõrkepiiridega, et käsitleda tõrkeid, mis tekivad andmete hankimise või renderdamise ajal. Tõrkepiirid on Reacti komponendid, mis püüavad JavaScripti tõrkeid kõikjal oma lapse komponendiharus, logivad need tõrked ja kuvavad varu-UI asemel kogu komponendiharu krahhi.

Näide:

            
import React, { Suspense } from 'react';
import fetchData from './fetchData';
import ErrorBoundary from './ErrorBoundary';

const userResource = fetchData('/api/user');

function UserProfile() {
  const user = userResource.read();

  return (
    

{user.name}

{user.bio}

); } function App() { return ( Something went wrong!
}> Loading user profile...}> ); } export default App;

Selles näites püüab `ErrorBoundary` kinni kõik tõrked, mis tekivad `UserProfile` komponendi renderdamise või kasutajaandmete hankimise ajal. Kui tõrge ilmneb, kuvab see varu-UI, takistades kogu rakenduse krahhi.

Eelised:

Puudused:

Praktilised kaalutlused globaalse publiku jaoks

Reacti rakenduste arendamisel globaalsele publikule kaaluge järgmist:

Tegevuslikud ĂĽlevaated ja parimad tavad

Siin on mõned tegevuslikud ülevaated ja parimad tavad mitme ressursi laadimise haldamiseks React Suspense'iga:

Järeldus

React Suspense pakub võimsat ja paindlikku mehhanismi asünkroonsete toimingute haldamiseks ja teie rakenduste kasutajakogemuse parandamiseks. Mõistes Suspense'i ja ressursside põhimõisteid ning rakendades selles ajaveebipostituses kirjeldatud strateegiaid, saate tõhusalt hallata mitme ressursi laadimist ja luua vastupidavamaid ja robustsemaid Reacti rakendusi globaalse publiku jaoks. Pidage meeles, et kasutajatele kogu maailmas rakenduste arendamisel arvestage rahvusvahelisuse, juurdepääsetavuse ja jõudluse optimeerimisega. Järgides neid parimaid tavasid, saate luua rakendusi, mis pole mitte ainult funktsionaalsed, vaid ka kasutajasõbralikud ja kõigile kättesaadavad.