0Pricing
React Academy · Leçon

Sélecteurs et prévention des nouveaux rendus inutiles

Extrayez des parties précises de l’état via des sélecteurs afin que les composants ne soient rendus à nouveau qu’en cas de besoin.

Sélecteurs et prévention des nouveaux rendus inutiles est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.

Bienvenue

Dans cette leçon, vous utiliserez les sélecteurs Zustand pour n'abonner les composants qu'aux tranches d'état dont ils ont besoin, afin d'éviter les réaffichages inutiles lorsque d'autres parties du store changent.

Le problème du sélecteur par défaut

Appeler le crochet du store sans sélecteur renvoie l'objet store entier. Le composant est réaffiché à chaque changement du store (EVERY), même lorsque l'état modifié n'a aucun rapport avec lui.
// Bad: re-renders on every store change
const store = useAppStore();
return <p>{store.user.name}</p>;

Utilisation d'un sélecteur

Transmettez une fonction sélecteur au crochet du store. Le composant n'est réaffiché que lorsque la valeur renvoyée par le sélecteur change.
// Good: re-renders only when user.name changes
const name = useAppStore(s => s.user.name);
return <p>{name}</p>;

Vérification de l'égalité des références

Zustand utilise par défaut l'égalité stricte (===). Si votre sélecteur renvoie un nouvel objet ou un nouveau tableau à chaque appel, le composant est réaffiché même si le contenu est identique.
// Creates a new object every time — always re-renders!
const info = useStore(s => ({ id: s.id, name: s.name }));

Correction avec l'égalité superficielle

Importez `shallow` depuis zustand et transmettez-le comme fonction d'égalité afin d'éviter les réaffichages lorsque le contenu des objets est identique.
import { shallow } from 'zustand/shallow';

const info = useAppStore(
  s => ({ id: s.id, name: s.name }),
  shallow // compare by content, not reference
);

Sélection de plusieurs valeurs

Utilisez le modèle fondé sur l'égalité superficielle pour sélectionner plusieurs valeurs à la fois sans provoquer de réaffichages inutiles.
const { items, loading } = useCartStore(
  s => ({ items: s.items, loading: s.loading }),
  shallow
);

Références stables des actions

Les actions, qui sont des fonctions, ont des références stables dans Zustand : elles ne changent pas lorsque l'état est mis à jour. Vous pouvez les sélectionner sans égalité superficielle et elles ne provoqueront pas de réaffichages.
// Actions are always stable — no shallow needed
const addToCart = useCartStore(s => s.addToCart);

Assistant useShallow (Zustand 5 et versions ultérieures)

Zustand 5 fournit un utilitaire useShallow qui entoure automatiquement le sélecteur d'une égalité superficielle, ce qui rend le code plus clair.
import { useShallow } from 'zustand/react/shallow';

const { items, loading } = useCartStore(
  useShallow(s => ({ items: s.items, loading: s.loading }))
);

Combinaison de sélecteurs

Dérivez les valeurs calculées dans les sélecteurs afin d'éviter de stocker un état dérivé dans le store. Calculez les totaux, les listes filtrées ou les chaînes formatées dans le sélecteur.
const totalPrice = useCartStore(
  s => s.items.reduce((sum, item) => sum + item.price, 0)
);

Analyse des réaffichages de Zustand

Utilisez le profileur de React DevTools pour vérifier que vos sélecteurs fonctionnent. Après avoir ajouté au store un élément sans rapport, vérifiez que le composant qui utilise uniquement le sélecteur de nom ne doit PAS apparaître (NOT) dans le graphique en flammes de la validation.

Vérification rapide

Pourquoi devez-vous utiliser l'égalité superficielle lorsqu'un sélecteur Zustand renvoie un objet ?

Récapitulatif

Utilisez toujours des sélecteurs précis. Utilisez l'égalité superficielle lorsque vous sélectionnez plusieurs valeurs sous la forme d'un objet. Dérivez les valeurs calculées dans les sélecteurs. Les actions ont des références stables et n'ont pas besoin d'une égalité superficielle.

À suivre

Leçon suivante : **Persistance de l'état avec le middleware de persistance** — vous synchroniserez l'état de Zustand avec localStorage à l'aide du middleware de persistance.

Questions Fréquemment Posées

La leçon « Sélecteurs et prévention des nouveaux rendus inutiles » est-elle gratuite ?

Oui — le texte complet de « Sélecteurs et prévention des nouveaux rendus inutiles » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Sélecteurs et prévention des nouveaux rendus inutiles » ?

Extrayez des parties précises de l’état via des sélecteurs afin que les composants ne soient rendus à nouveau qu’en cas de besoin. Tu pratiques React Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer React Academy ?

Aucune expérience préalable n'est requise. React Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Sélecteurs et prévention des nouveaux rendus inutiles » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon React Academy ?

Oui. Chaque leçon React Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Créer votre premier store Zustand
  2. Sélecteurs et prévention des nouveaux rendus inutiles
  3. Persister l’état avec le middleware Persist
  4. DevTools de Zustand et tests des stores
← Retour à React Academy