Maison >interface Web >js tutoriel >Optimiser l'application React
Pour optimiser une application React, vous pouvez utiliser plusieurs stratégies clés axées sur les performances, la réduction de la taille du bundle, le rendu efficace et l'expérience utilisateur globale. Voici un aperçu des techniques d'optimisation spécifiques à React :
Le fractionnement du code vous permet de diviser votre application en morceaux plus petits qui peuvent être chargés selon les besoins, plutôt que de charger l'intégralité de l'application en même temps. Cela améliore le temps de chargement initial.
const LazyComponent = React.lazy(() => import('./Component')); function App() { return ( <react.suspense fallback="{<div">Loading...}> <lazycomponent></lazycomponent> </react.suspense> ); }
Éviter les nouveaux rendus inutiles est crucial pour améliorer les performances des applications React.
const MyComponent = React.memo(({ value }) => { return <div>{value}</div>; });
const computedValue = useMemo(() => expensiveComputation(value), [value]);
const handleClick = useCallback(() => { console.log('Clicked'); }, []);
La gestion de l'état de manière à éviter les rendus inutiles peut grandement améliorer les performances.
const [state, dispatch] = useReducer(reducer, initialState);
Le rendu de longues listes ou tableaux peut ralentir les performances. Utilisez des techniques de virtualisation de liste pour afficher uniquement ce qui est visible à l’écran.
import { FixedSizeList as List } from 'react-window'; const MyList = ({ items }) => ( <list height="{500}" itemcount="{items.length}" itemsize="{35}" width="{300}"> {({ index, style }) => <div style="{style}">{items[index]}</div>} </list> );
Assurez-vous que votre application importe uniquement les parties des bibliothèques utilisées pour réduire la taille du bundle.
// Instead of this: import _ from 'lodash'; // Do this: import debounce from 'lodash/debounce';
Les images sont souvent les atouts les plus importants d'une page. Utilisez le chargement différé pour retarder le chargement des images jusqu'à ce qu'elles soient dans la fenêtre.
import LazyLoad from 'react-lazyload'; const ImageComponent = () => ( <lazyload height="{200}" once> <img src="image-url.jpg" alt="Optimiser lapplication React"> </lazyload> );
const LazyImage = ({ src, alt }) => { const [inView, setInView] = useState(false); const imgRef = useRef(null); useEffect(() => { const observer = new IntersectionObserver(([entry]) => { if (entry.isIntersecting) { setInView(true); observer.disconnect(); } }); observer.observe(imgRef.current); }, []); return <img ref="{imgRef}" src="%7BinView" : alt="{alt}">; };
Utilisez Terser ou la minification intégrée de Webpack pour réduire la taille de vos bundles JavaScript pendant le processus de construction.
Create React App réduit automatiquement le code pour les builds de production :
npm run build
Analysez la taille de vos bundles JavaScript pour identifier les domaines dans lesquels vous pouvez vous améliorer.
npm install --save-dev webpack-bundle-analyzer
Dans votre configuration Webpack :
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); module.exports = { plugins: [ new BundleAnalyzerPlugin() ] };
npm install @fullhuman/postcss-purgecss
Exemple de configuration PostCSS :
const purgecss = require('@fullhuman/postcss-purgecss')({ content: ['./src/**/*.js', './public/index.html'], defaultExtractor: content => content.match(/[\w-/:]+(? <h3> 10. <strong>Optimiser les requêtes réseau</strong> </h3> <p>La réduction du nombre de requêtes réseau et l'optimisation des appels d'API peuvent entraîner des améliorations significatives des performances.</p>
const fetchResults = debounce((query) => { // API call logic }, 300);
import useSWR from 'swr'; const fetcher = url => fetch(url).then(res => res.json()); const MyComponent = () => { const { data, error } = useSWR('/api/data', fetcher); if (error) return <div>Error loading data</div>; if (!data) return <div>Loading...</div>; return <div>{data.message}</div>; };
Avoid adding unnecessary elements to the DOM by using React Fragments ( and >) when wrapping multiple elements.
const MyComponent = () => ( <h1>Title</h1> <p>Content</p> > );
Use the React Developer Tools profiler to identify performance bottlenecks in your app.
Optimizing a React application requires careful attention to performance, bundle size, and rendering efficiency. By employing techniques like code splitting, memoization, lazy loading, tree shaking, and minimizing network requests, you can significantly improve the performance of your app. Make sure to regularly analyze and test your app’s performance to catch any potential inefficiencies.
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!