React Suspense est une fonctionnalité puissante qui permet aux développeurs de gérer le rendu asynchrone avec élégance en affichant une interface utilisateur de secours pendant le chargement des composants ou des données. Il fonctionne main dans la main avec les solutions React.lazy, Concurrent Rendering et Data Fetching telles que React Query, Relay ou des implémentations personnalisées.
import React, { Suspense } from "react"; const LazyComponent = React.lazy(() => import("./LazyComponent")); function App() { return ( <Suspense fallback={<div>Loading...</div>}> <LazyComponent /> </Suspense> ); } export default App;
import React from "react"; import HeavyComponent from "./HeavyComponent"; function App() { return ( <div> <h1>Main App</h1> <HeavyComponent /> </div> ); } export default App;
Le HeavyComponent se charge de manière synchrone, augmentant ainsi le temps de chargement initial.
import React, { Suspense } from "react"; const HeavyComponent = React.lazy(() => import("./HeavyComponent")); function App() { return ( <div> <h1>Main App</h1> <Suspense fallback={<div>Loading Heavy Component...</div>}> <HeavyComponent /> </Suspense> </div> ); } export default App;
Désormais, le HeavyComponent se charge uniquement lorsque cela est nécessaire, affichant une solution de repli pendant le processus de chargement.
import React, { Suspense } from "react"; const ComponentA = React.lazy(() => import("./ComponentA")); const ComponentB = React.lazy(() => import("./ComponentB")); function App() { return ( <div> <h1>Main App</h1> <Suspense fallback={<div>Loading Components...</div>}> <ComponentA /> <ComponentB /> </Suspense> </div> ); } export default App;
L'interface utilisateur de secours s'affiche jusqu'à ce que les les deux composants terminent le chargement.
React Suspense est également utile pour la récupération de données asynchrone lorsqu'il est intégré à des bibliothèques telles que Relay ou React Query.
import React, { Suspense } from "react"; import { useQuery } from "react-query"; function DataComponent() { const { data } = useQuery("fetchData", fetchData); return <div>{data}</div>; } function App() { return ( <Suspense fallback={<div>Loading data...</div>}> <DataComponent /> </Suspense> ); } export default App;
Si une erreur se produit lors du chargement de composants ou de données, React Suspense ne fournit pas de gestion intégrée des erreurs. Utilisez une limite d'erreur à cet effet.
import React, { Suspense } from "react"; const LazyComponent = React.lazy(() => import("./LazyComponent")); function App() { return ( <Suspense fallback={<div>Loading...</div>}> <LazyComponent /> </Suspense> ); } export default App;
Vous pouvez imbriquer plusieurs composants Suspense pour un contrôle granulaire des états de secours.
import React from "react"; import HeavyComponent from "./HeavyComponent"; function App() { return ( <div> <h1>Main App</h1> <HeavyComponent /> </div> ); } export default App;
React Suspense est un outil polyvalent permettant de gérer le rendu asynchrone dans les applications React. Il simplifie la gestion des états de chargement, améliore les performances grâce au chargement paresseux et crée une expérience utilisateur plus fluide lorsqu'il est combiné avec des techniques de fractionnement de code et de gestion des erreurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!