Le DOM virtuel et l'architecture basée sur les composants de React le rendent incroyablement efficace, mais sans une optimisation appropriée, votre application peut toujours souffrir de problèmes de performances. Examinons les stratégies éprouvées pour éliminer les rendus inutiles et améliorer les performances de votre application React.
Avant d'optimiser, nous devons comprendre quand et pourquoi les composants React sont restitués :
Tous les rendus ne sont pas mauvais, mais les rendus inutiles peuvent avoir un impact sur les performances. Voyons comment les prévenir.
const MovieCard = React.memo(({ title, rating, onLike }) => { console.log(`MovieCard rendered: ${title}`); return ( <div className="card"> <h3>{title}</h3> <span>Rating: {rating}/10</span> <button onClick={onLike}>Like</button> </div> ); }); // Usage <MovieCard title="Inception" rating={9.3} onLike={() => handleLike('inception')} />
? Conseil de pro : bien que React.memo soit puissant, utilisez-le de manière stratégique. Tout mémoriser peut en fait nuire aux performances.
const MovieList = () => { const [movies, setMovies] = useState([]); const handleLike = useCallback((movieId) => { setMovies(prevMovies => prevMovies.map(movie => movie.id === movieId ? { ...movie, likes: movie.likes + 1 } : movie ) ); }, []); // Empty deps array as it only uses setState return movies.map(movie => ( <MovieCard key={movie.id} {...movie} onLike={() => handleLike(movie.id)} /> )); };
const MovieAnalytics = ({ movies }) => { const statistics = useMemo(() => ({ averageRating: movies.reduce((acc, m) => acc + m.rating, 0) / movies.length, topRated: [...movies].sort((a, b) => b.rating - a.rating)[0], totalLikes: movies.reduce((acc, m) => acc + m.likes, 0) }), [movies]); return ( <div> <h2>Analytics Dashboard</h2> <p>Average Rating: {statistics.averageRating.toFixed(1)}</p> <p>Most Popular: {statistics.topRated.title}</p> <p>Total Likes: {statistics.totalLikes}</p> </div> ); };
const MovieApp = () => { const [favorites, setFavorites] = useState(new Set()); // Lifted state handler const toggleFavorite = useCallback((movieId) => { setFavorites(prev => { const next = new Set(prev); if (next.has(movieId)) next.delete(movieId); else next.add(movieId); return next; }); }, []); return ( <div> <MovieList onFavorite={toggleFavorite} /> <FavoritesList ids={favorites} /> </div> ); };
function useMovieData(movieId) { const [data, setData] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { let mounted = true; async function fetchMovie() { setLoading(true); try { const response = await fetch(`/api/movies/${movieId}`); const movie = await response.json(); if (mounted) { setData(movie); setLoading(false); } } catch (error) { if (mounted) { console.error('Failed to fetch movie:', error); setLoading(false); } } } fetchMovie(); return () => { mounted = false; }; }, [movieId]); return { data, loading }; }
✅ Utilisez React.memo pour les composants fonctionnels purs
✅ Implémentez useCallback pour les gestionnaires d'événements passés en tant qu'accessoires
✅ Appliquez useMemo pour les calculs coûteux
✅ Évitez la création d'objets en ligne dans les rendus
✅ Utilisez les accessoires clés appropriés dans les listes
✅ Profilez régulièrement votre application
❌ Sur-optimisation
❌ Optimisation prématurée
❌Tout mémoriser
❌ Création de nouveaux objets/tableaux dans le rendu
❌ Imbrication profonde de composants
React 19 apporte des améliorations automatiques des performances :
L'optimisation des performances dans React est un équilibre entre la complexité du code et les gains de performances réels. Commencez par les bases, mesurez les performances de votre application et optimisez-la si nécessaire. N'oubliez pas : l'optimisation prématurée est la racine de tous les maux !
✨ J'espère que cela vous a été utile ! N'oubliez pas de m'aimer et de me suivre pour plus de trucs et astuces React !
? Suivez-moi sur X (Twitter) et LinkedIn pour des conseils et des informations quotidiens sur le développement Web !
? Continuez à coder, continuez à créer et continuez à vous améliorer !
Je vous souhaite à tous succès et positivité en cette merveilleuse journée. Rendons-le incroyable ensemble ! ?
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!