Quand l'état change, React réexécute la fonction du composant pour produire un nouvel arbre d'éléments, puis le compare à l'arbre précédent. Il confronte les types de nœuds et les clés, position par position : un type identique signifie que React met à jour les props sur place, un type différent signifie qu'il démonte l'ancien sous-arbre et en monte un nouveau. Seul l'ensemble minimal de changements qui en résulte est appliqué au vrai DOM.
Pourquoi les recruteurs posent cette question
Cette question sépare les gens qui ont mémorisé la syntaxe des hooks de ceux qui comprennent le modèle en dessous. Le recruteur veut vous entendre dire que le rendu n'est pas la même chose que la validation dans le DOM, que le type d'élément et la clé pilotent la comparaison, et que cela explique de vrais bugs, comme un état qui se réinitialise quand un composant se déplace dans l'arbre. Cela prépare aussi les relances sur la mémoïsation et la performance.
Comment structurer votre réponse
- Séparez la phase de rendu de la phase de commit dès votre première phrase.
- Expliquez les règles de comparaison : même type, mise à jour sur place ; type différent, remontage.
- Dites à quoi servent les clés et pourquoi elles comptent pour les listes.
- Terminez sur une conséquence concrète, comme la perte d'état quand un sous-arbre est remonté.
Exemple de réponse
Donc quand l'état change, React rappelle la fonction du composant, et ça lui donne un nouvel arbre d'éléments. C'est la phase de rendu, et rien n'a encore touché le DOM. Ensuite il parcourt le nouvel arbre face à l'ancien. À chaque position, il regarde d'abord le type de l'élément. Si c'est le même type, disons qu'un div reste un div, il garde le nœud DOM existant et l'état existant, et il se contente de patcher les props qui ont changé. Si le type est différent, il jette tout le sous-arbre et en construit un neuf, ce qui veut dire que tout état à l'intérieur est perdu. Pour les listes, il s'appuie sur les clés plutôt que sur la position brute, donc les éléments peuvent bouger sans être reconstruits. Puis tous les changements collectés sont appliqués en une seule passe de commit. Ce qui fait que ça compte pour moi en pratique, c'est que j'ai un jour débogué un formulaire qui se réinitialisait à chaque frappe, et c'était parce que le parent le rendait dans une condition qui changeait le type de l'élément conteneur. Une fois que vous connaissez les règles de comparaison, c'est un correctif de cinq minutes au lieu d'un après-midi.
Vous passez cet entretien bientôt ? GhostPilot écoute votre appel en direct, repère la question dès qu'elle est posée et affiche une réponse structurée à l'écran en temps réel. Essayez-le lors de votre prochain entretien blanc, ou prenez un Session Pass à $29, sans abonnement, pour le jour J.
Voir comment ça marcheQuestions de relance à prévoir
- Qu'arrive-t-il à l'état d'un composant quand le type d'élément change à la même position ?
- Comment React regroupe-t-il plusieurs mises à jour d'état dans un même gestionnaire d'événement ?
- En quoi le React Compiler change-t-il tout cela ?
Autres questions pour Développeur React
Votre recruteur posera sa propre version de celle-ci. Collez votre véritable fiche de poste dans le Question Predictor gratuit et obtenez les 20 questions que ce poste a le plus de chances de poser, avec ce que chacune cherche vraiment à sonder.
Prédire mes questions