


Maîtriser le chargement paresseux de React : un guide complet d'introduction
Introduction
React Lazy Loading est une technique d'optimisation des performances puissante qui permet de réduire la taille initiale du bundle de votre application en divisant le code en morceaux plus petits et en les chargeant à la demande. Ce guide vous montrera comment implémenter efficacement le chargement différé dans vos applications React.
Comprendre le chargement paresseux de React
React fournit deux fonctionnalités principales pour implémenter le fractionnement de code :
- React.lazy() : vous permet de restituer une importation dynamique en tant que composant standard
- Suspense : affiche le contenu de secours en attendant le chargement du composant paresseux
Implémentation de base
Chargement paresseux de composants simples
import React, { lazy, Suspense } from 'react'; // Instead of regular import // import ExpensiveComponent from './ExpensiveComponent'; // Use lazy loading const ExpensiveComponent = lazy(() => import('./ExpensiveComponent')); function App() { return ( <suspense fallback="{<div">Loading...}> <expensivecomponent></expensivecomponent> </suspense> ); }
Chargement différé basé sur l'itinéraire
import React, { lazy, Suspense } from 'react'; import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; // Lazy load route components const Home = lazy(() => import('./routes/Home')); const Dashboard = lazy(() => import('./routes/Dashboard')); const Profile = lazy(() => import('./routes/Profile')); function App() { return ( <router> <suspense fallback="{<div">Loading...}> <routes> <route path="/" element="{<Home"></route>} /> <route path="/dashboard" element="{<Dashboard"></route>} /> <route path="/profile" element="{<Profile"></route>} /> </routes> </suspense> </router> ); }
Modèles avancés
1. Composant de chargement personnalisé
const LoadingSpinner = () => ( <div classname="loading-spinner"> <div classname="spinner"></div> <p>Loading content...</p> </div> ); // Reusable lazy loading wrapper const LazyComponent = ({ component: Component, ...props }) => { return ( <suspense fallback="{<LoadingSpinner"></suspense>}> <component></component> ); }; // Usage const MyLazyComponent = lazy(() => import('./MyComponent')); <lazycomponent component="{MyLazyComponent}" someprop="value"></lazycomponent>;
2. Intégration des limites d'erreur
class ErrorBoundary extends React.Component { constructor(props) { super(props); this.state = { hasError: false }; } static getDerivedStateFromError(error) { return { hasError: true }; } componentDidCatch(error, errorInfo) { console.error('Lazy loading error:', error, errorInfo); } render() { if (this.state.hasError) { return <div>Something went wrong. Please try again.</div>; } return this.props.children; } } // Usage with lazy loading function App() { return ( <errorboundary> <suspense fallback="{<LoadingSpinner"></suspense>}> <mylazycomponent></mylazycomponent> </errorboundary> ); }
3. Préchargement des composants
const MyLazyComponent = lazy(() => import('./MyComponent')); // Preload component when hovering over a button function PreloadButton() { const handleMouseEnter = () => { const componentPromise = import('./MyComponent'); // Component will start loading on hover }; return ( <button onmouseenter="{handleMouseEnter}" onclick="{()"> setShowComponent(true)} > Show Component </button> ); }
Meilleures pratiques
- Choisissez la bonne granularité
// Too fine-grained (avoid) const Button = lazy(() => import('./Button')); // Better - lazy load feature modules const FeatureModule = lazy(() => import('./features/FeatureModule'));
- Composants associés au groupe
// Lazy load related components together const AdminDashboard = lazy(() => import('./admin/Dashboard')); // This will load all admin components in one chunk
- Gérer les états de chargement avec élégance
const LoadingFallback = () => ( <div classname="loading-state"> <skeleton></skeleton> {/* Use skeleton loading */} <progressbar></progressbar> {/* Show loading progress */} </div> ); function App() { return ( <suspense fallback="{<LoadingFallback"></suspense>}> <mylazycomponent></mylazycomponent> ); }
Modèles courants et cas d'utilisation
1. Chargement paresseux modal/dialogue
const Modal = lazy(() => import('./Modal')); function App() { const [isOpen, setIsOpen] = useState(false); return ( <button onclick="{()"> setIsOpen(true)}>Open Modal</button> {isOpen && ( <suspense fallback="{<LoadingSpinner"></suspense>}> <modal onclose="{()"> setIsOpen(false)} /> )} > ); } </modal>
2. Chargement conditionnel des fonctionnalités
function FeatureFlag({ flag, children }) { const LazyFeature = lazy(() => flag ? import('./NewFeature') : import('./OldFeature') ); return ( <suspense fallback="{<LoadingSpinner"></suspense>}> <lazyfeature>{children}</lazyfeature> ); }
Conseils de performances
- Nom des morceaux
// Use webpack magic comments for better debugging const AdminPanel = lazy(() => import(/* webpackChunkName: "admin" */ './AdminPanel') );
- Priorité de chargement
// High-priority routes const MainContent = lazy(() => import(/* webpackPrefetch: true */ './MainContent') ); // Lower-priority features const Analytics = lazy(() => import(/* webpackPreload: true */ './Analytics') );
Pièges courants à éviter
- Ne chargez pas paresseusement les composants qui sont toujours nécessaires lors du rendu initial
- Évitez le chargement paresseux de très petits composants
- N'oubliez pas de gérer les états de chargement et d'erreur
- Soyez prudent avec les limites de Suspense imbriquées
Surveillance et analyse
const trackComponentLoad = (componentName) => { // Track loading time and success performance.mark(`${componentName}-start`); return { success: () => { performance.mark(`${componentName}-end`); performance.measure( `${componentName}-load`, `${componentName}-start`, `${componentName}-end` ); }, error: (error) => { // Log error to analytics console.error(`Failed to load ${componentName}:`, error); } }; } // Usage const MyComponent = lazy(() => { const tracking = trackComponentLoad('MyComponent'); return import('./MyComponent') .then(module => { tracking.success(); return module; }) .catch(error => { tracking.error(error); throw error; }); });
Conclusion
React Lazy Loading est un outil essentiel pour optimiser les grandes applications React. En suivant ces modèles et bonnes pratiques, vous pouvez améliorer considérablement le temps de chargement initial et les performances globales de votre application.
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!

Les dernières tendances de JavaScript incluent la montée en puissance de TypeScript, la popularité des frameworks et bibliothèques modernes et l'application de WebAssembly. Les prospects futurs couvrent des systèmes de type plus puissants, le développement du JavaScript côté serveur, l'expansion de l'intelligence artificielle et de l'apprentissage automatique, et le potentiel de l'informatique IoT et Edge.

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Python est plus adapté à la science des données et à l'apprentissage automatique, tandis que JavaScript est plus adapté au développement frontal et complet. 1. Python est connu pour sa syntaxe concise et son écosystème de bibliothèque riche, et convient à l'analyse des données et au développement Web. 2. JavaScript est le cœur du développement frontal. Node.js prend en charge la programmation côté serveur et convient au développement complet.

JavaScript ne nécessite pas d'installation car il est déjà intégré à des navigateurs modernes. Vous n'avez besoin que d'un éditeur de texte et d'un navigateur pour commencer. 1) Dans l'environnement du navigateur, exécutez-le en intégrant le fichier HTML via des balises. 2) Dans l'environnement Node.js, après avoir téléchargé et installé Node.js, exécutez le fichier JavaScript via la ligne de commande.

Comment envoyer à l'avance des notifications de tâches en quartz lors de l'utilisation du minuteur de quartz pour planifier une tâche, le temps d'exécution de la tâche est défini par l'expression CRON. Maintenant...

Comment obtenir les paramètres des fonctions sur les chaînes prototypes en JavaScript dans la programmation JavaScript, la compréhension et la manipulation des paramètres de fonction sur les chaînes prototypes est une tâche commune et importante ...

Analyse de la raison pour laquelle la défaillance du déplacement de style dynamique de l'utilisation de Vue.js dans la vue Web de l'applet WeChat utilise Vue.js ...

Comment faire des demandes d'obtention simultanées pour plusieurs liens et juger en séquence pour retourner les résultats? Dans les scripts de Tampermonkey, nous devons souvent utiliser plusieurs chaînes ...


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Version Mac de WebStorm
Outils de développement JavaScript utiles

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

SublimeText3 version anglaise
Recommandé : version Win, prend en charge les invites de code !

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel