Question d'entretien pour Développeur React

Quelle est la différence entre un React Server Component et un Client Component, et comment décidez-vous lequel utiliser ?

Ce que le recruteur cherche à évaluer, comment structurer votre réponse et un exemple parlé à adapter.

Réponse rapide

Les Server Components s'exécutent uniquement sur le serveur, au moment de la requête ou du build, et n'envoient jamais leur code au navigateur ; ils peuvent attendre une requête base de données directement mais ne peuvent pas utiliser d'état, d'effets ni de gestionnaires d'événements. Les Client Components sont marqués par la directive use client, s'hydratent dans le navigateur et gèrent l'interactivité. Prenez le serveur par défaut, et poussez la frontière client aussi bas que possible dans l'arbre.

Pourquoi les recruteurs posent cette question

Le travail sur l'App Router est courant maintenant, et beaucoup de candidats en ont seulement lu la doc. Le recruteur veut savoir si vous comprenez la frontière : quel code part vraiment dans le navigateur, ce qui peut franchir la ligne de sérialisation, et pourquoi la valeur par défaut compte pour la taille du bundle. Il guette aussi si vous connaissez l'astuce de composition qui consiste à passer des enfants rendus côté serveur dans un composant client.

Comment structurer votre réponse

  • Commencez par dire où chacun s'exécute et ce qui part dans le navigateur.
  • Nommez les limites concrètes : pas de hooks, pas de gestionnaires d'événements, uniquement des props sérialisables.
  • Énoncez votre choix par défaut et le déclencheur qui vous fait franchir la frontière.
  • Mentionnez le passage d'enfants rendus côté serveur dans une coquille client.

Exemple de réponse

Exemple parlé, à la première personne

Ma façon de voir les choses, c'est que les Server Components servent à récupérer des données et à produire du markup, et les Client Components à tout ce que l'utilisateur touche. Un Server Component tourne sur le serveur, donc je peux attendre une requête directement dedans, et ni ce code ni ses dépendances ne se retrouvent dans le bundle navigateur. La contrepartie, c'est pas de useState, pas de useEffect, pas de onClick. Dès que j'ai besoin de l'un d'eux, j'ajoute use client en haut du fichier, et tout ce qu'il importe rejoint aussi le bundle client. Donc mon défaut, c'est le serveur, et je pousse la frontière le plus bas possible. Sur mon dernier projet, j'avais un tableau de bord où seuls le menu déroulant de filtre et l'infobulle du graphique étaient interactifs, donc ça faisait deux petits composants client, et le reste de la page, y compris un moteur de rendu markdown assez lourd, restait côté serveur. Ce qui piège les gens, c'est que les props qui franchissent la frontière doivent être sérialisables, donc vous ne pouvez pas faire descendre une fonction. Le motif que j'utilise à la place, c'est de passer des enfants rendus côté serveur dans une coquille client.

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 marche

Questions de relance à prévoir

  • Que pouvez-vous passer en props à travers la frontière serveur vers client ?
  • Comment deux composants client situés à des endroits différents d'une page rendue côté serveur partagent-ils de l'état ?
  • Que se passe-t-il si vous importez un module réservé au serveur dans un composant client ?

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

Répétez les questions difficiles avant qu'on vous les pose

Entraînez-vous avec un copilote en direct, puis présentez-vous prêt. Un Session Pass à $29 vous accompagne pendant l'entretien, sans abonnement et sans engagement.

Obtenir GhostPilot