Commencez aussi local que possible, dans le composant qui l'utilise, et ne le remontez au plus proche ancêtre commun que si des frères ont réellement besoin de le partager. Si ce sont des données serveur, elles appartiennent à une couche de cache, pas à l'état d'un composant. Si un utilisateur doit pouvoir en faire un lien, comme des filtres ou l'onglet courant, mettez-le dans l'URL. Un store global est le dernier recours.
Pourquoi les recruteurs posent cette question
Cette question révèle les réflexes d'architecture mieux que n'importe quelle question de trivia sur un framework. Le recruteur veut voir que vous classez l'état par nature, données serveur contre état d'interface contre état d'URL, plutôt que de tout envoyer par défaut dans un store global. Il guette aussi votre conscience du coût d'une remontée prématurée, puisqu'un état poussé trop haut provoque des re-rendus larges et du prop drilling pénibles à défaire plus tard.
Comment structurer votre réponse
- Classez d'abord l'état : serveur, URL, interface locale, ou vraiment global.
- Énoncez le défaut : le garder aussi local que possible.
- Donnez votre déclencheur pour le remonter ou le déplacer dans un store.
- Nommez le coût de se tromper dans un sens comme dans l'autre.
Exemple de réponse
Mon premier réflexe, c'est de déterminer de quelle sorte d'état il s'agit, parce que la plupart des choses que les gens appellent état ne sont pas vraiment de l'état local. Si ça vient du serveur, ça va dans un cache de requêtes, comme ça j'ai la déduplication, la revalidation et la gestion de la péremption au lieu de bricoler tout ça dans un useState et un effet. Si ça doit survivre à un rafraîchissement ou se partager sous forme de lien, comme les filtres actifs ou l'onglet ouvert, ça va dans l'URL. Ce qui reste est du vrai état d'interface, et ça commence dans le composant qui l'utilise. Je ne remonte que quand un deuxième composant en a réellement besoin, et seulement jusqu'au parent commun le plus proche. Les stores globaux, je les garde pour les choses vraiment transversales, comme l'utilisateur courant ou une connexion websocket. Le problème que j'ai nettoyé le plus souvent, c'est un état remonté dans un provider de haut niveau parce que deux composants en avaient besoin une fois, et deux ans plus tard tout se re-rend à chaque frappe et plus personne n'ose le redescendre.
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
- Comment décidez-vous que quelque chose a sa place dans l'URL plutôt qu'en mémoire ?
- Qu'est-ce qui casse quand des données serveur sont dupliquées dans l'état d'un composant ?
- Comment refactoriseriez-vous un état qui a été remonté trop haut ?
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