Maison > Article > interface Web > (Collection) Introduction aux questions d'entretien courantes dans React
Le contenu de cet article est une introduction aux (collections de) questions d'entretien courantes dans React. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
Ce qui suit est une liste de questions d'entretien couramment utilisées sur React :
Que vous soyez un intervieweur ou un recruteur, vous pouvez vous référer aux questions suivantes
Assurez-vous de mettre en signet
React créera un DOM virtuel (virtual DOM). Lorsque l'état d'un composant change, React marquera d'abord les changements dans le DOM virtuel via l'algorithme de « différence ». La deuxième étape est la réconciliation, et le DOM sera mis à jour avec les résultats de la différence.
Vous pouvez facilement savoir comment un composant est rendu en regardant simplement la fonction de rendu
L'introduction de JSX crée des composants Le code est plus lisible et il est plus facile de comprendre la disposition des composants ou la façon dont les composants se réfèrent les uns aux autres
Prend en charge le rendu côté serveur, ce qui peut améliorer le référencement et les performances
Facile à tester
React se concentre uniquement sur la couche View, il peut donc être utilisé avec n'importe quel autre framework (tel que Backbone.js, Angular.js)
Les composants de présentation se soucient de l'apparence du composant. Display accepte spécifiquement les données et les rappels via des accessoires et n'a presque jamais son propre état, mais lorsque le composant d'affichage a son propre état, il ne se soucie généralement que de l'état de l'interface utilisateur plutôt que de l'état des données.
Les composants du conteneur concernent davantage leur fonctionnement. Les composants conteneur fournissent des données et un comportement au composant de présentation ou à d'autres composants de conteneur. Ils appellent Flux actions
et le fournissent comme rappel au composant de présentation. Les composants du conteneur sont souvent avec état car ils sont des sources de données (pour d'autres composants).
Les composants de classe vous permettent non seulement d'utiliser davantage de fonctions supplémentaires, telles que le composant lui-même, des hooks d'état et de cycle de vie. permettre également aux composants d'accéder directement au magasin et de maintenir l'état
Lorsqu'un composant reçoit uniquement des accessoires et restitue le composant lui-même sur la page, le composant est un « composant sans état », un tel composant peut être créé à l'aide d'un fonction pure. De tels composants sont également appelés composants stupides ou composants d'affichage
État Est-ce une structure de données utilisée pour la valeur par défaut de les données nécessaires au montage du composant. L'état peut muter au fil du temps, mais le plus souvent en raison du comportement des événements de l'utilisateur.
Props (abréviation de propriétés) est la configuration du composant. Les accessoires sont transmis des composants parents aux composants enfants, et en ce qui concerne les composants enfants, les accessoires sont immuables. Un composant ne peut pas modifier ses propres accessoires, mais il peut assembler les accessoires de ses sous-composants (gestion unifiée). Les accessoires ne sont pas non plus de simples données : les fonctions de rappel peuvent également être transmises via des accessoires.
componentWillMount -- principalement utilisé pour la configuration de l'application dans le composant racine
componentDidMount -- tout peut être fait ici Toutes les configurations qui ne peuvent pas être effectuées sans DOM et commencez à obtenir toutes les données dont vous avez besoin ; si vous avez besoin de configurer l'écoute d'événements, vous pouvez également la compléter ici
componentWillReceiveProps -- Cette fonction périodique agit sur l'état causée par des changements d'accessoires spécifiques. Transition
shouldComponentUpdate -- Si vous vous inquiétez du rendu excessif de votre composant, ShouldComponentUpdate est un endroit pour améliorer les performances car il empêche le composant de restituer s'il reçoit de nouveaux accessoires. ShouldComponentUpdate doit renvoyer une valeur booléenne pour déterminer si le composant doit être restitué
componentWillUpdate -- rarement utilisé. Il peut être utilisé pour remplacer les composants componentWillReceiveProps et ShouldComponentUpdate (mais ne peut pas accéder aux accessoires précédents)
componentDidUpdate -- souvent utilisé pour mettre à jour le DOM en réponse à des changements d'accessoires ou d'état
componentWillUnmount -- ici vous Vous pouvez annuler la demande de réseau, ou supprimer tous les écouteurs d'événements liés au composant
Dans le composant React, la requête réseau doit être effectuée dans componentDidMount ? Cette méthode sera exécutée lors du premier "montage" du composant (ajouté au DOM) et ne sera exécutée qu'une seule fois dans le cycle de vie du composant. Plus important encore, vous ne pouvez pas garantir qu'avant que le composant ne soit monté La requête Ajax est terminée. Si tel est le cas, cela signifie que vous essayez d'appeler setState sur un composant non monté, ce qui ne fonctionnera pas. Faire une requête réseau dans composantDidMount garantira qu'il existe un composant prêt à être mis à jour.
En HTML, les éléments de formulaire tels que ,
Les références peuvent être utilisées pour obtenir une référence à un nœud DOM ou à un composant React. De bons exemples d'utilisation des références sont la gestion de la sélection de focus/texte, le déclenchement d'animations de commandes ou l'intégration avec des bibliothèques DOM tierces. Vous devez éviter d'utiliser les références de chaîne et les rappels de référence en ligne. Les rappels Refs sont recommandés par React.
Un composant d'ordre supérieur est une fonction qui prend un composant comme paramètre et renvoie un nouveau composant. HOC vous permet de réutiliser le code, la logique et les abstractions d'amorçage. La fonction la plus courante est probablement la fonction de connexion de Redux. En plus de simplement partager des bibliothèques d'outils et une composition simple, le meilleur moyen pour HOC est de partager les comportements entre les composants React. Si vous constatez que vous avez écrit beaucoup de code à différents endroits pour faire la même chose, vous devriez envisager de refactoriser le code dans un HOC réutilisable.
Exercice
Écrire un HOC qui inverse son entrée
Écrire un HOC qui fournit des données de l'API au composant entrant
Écrire une implémentation de ShouldComponentUpdate HOC pour éviter la réconciliation
Écrivez un HOC qui trie les composants enfants du composant entrant via React.Children.toArray
Sécurité de la portée : Avant la fonction flèche, chaque fonction nouvellement créée a sa propre valeur this (dans le constructeur, c'est un nouvel objet ; en mode strict, ceci dans l'appel de fonction n'est pas défini ; si la fonction est appelée une "méthode objet" ", puis l'objet sous-jacent, etc.), mais pas les fonctions fléchées, elles utilisent la valeur this du contexte d'exécution englobant.
Simple : les fonctions fléchées sont faciles à lire et à écrire.
Clair : Lorsque tout est une fonction fléchée, n'importe quelle fonction régulière peut être utilisée immédiatement pour définir la portée. Les développeurs peuvent toujours rechercher les instructions de fonction immédiatement supérieures pour en voir la valeur
Parce que les mises à jour de this.props et this.state peuvent être asynchrones et que leurs valeurs ne sont pas fiables ? pour calculer l'état suivant.
this
dans le constructeur, existe-t-il un autre moyen ? Vous pouvez utiliser des initialiseurs de propriété pour lier correctement les rappels, create-react -app est également pris en charge par défaut. Dans les rappels, vous pouvez utiliser des fonctions fléchées, mais le problème est qu'un nouveau rappel est créé à chaque rendu du composant.
Le retour de null dans la méthode de rendu du composant n'affectera pas la méthode de cycle de vie qui déclenche le composant
Les clés aideront React à identifier les éléments qui ont été modifiés, ajoutés ou supprimés. Clés Les éléments du tableau doivent être attribués pour donner à l'élément (DOM) une identité stable, choisissez une clé La meilleure approche consiste à utiliser une chaîne qui identifie de manière unique un élément de liste. Plusieurs fois, vous utiliserez les identifiants dans les données comme clés, lorsque vous n'avez pas d'identifiants stables. Lorsqu'il est utilisé avec des éléments rendus, vous pouvez utiliser l'index d'élément comme clé pour restituer l'élément, mais cela n'est pas recommandé car si les éléments peuvent être réorganisés, le nouveau rendu sera plus lent.
Avant que super() ne soit appelée, la sous-classe ne peut pas l'utiliser. Dans ES2015, la sous-classe doit appeler super(). dans le constructeur. La raison du passage des accessoires à super() est de faciliter l'accès à this.props dans le constructeur (dans les sous-classes).
JSX est une extension de la syntaxe JavaScript et possède toutes les fonctions de JavaScript. Réaction de production JSX "Element", vous pouvez envelopper n'importe quelle expression JavaScript entre accolades et l'intégrer dans JSX. Une fois la compilation terminée, l'expression JSX devient une expression régulière Objet JavaScript, ce qui signifie que vous pouvez utiliser JSX dans des instructions if et des boucles for, l'attribuer à une variable, l'accepter comme argument et le renvoyer à partir des fonctions.
Question :
const element = ( <h1 className="greeting"> Hello, rdhub.cn! </h1> );
Réponse :
const element = React.createElement( 'h1', {className: 'greeting'}, 'Hello, rdhub.cn!' );
Children
Dans les expressions JSX, le contenu entre une balise d'ouverture (telle que ) et une balise de fermeture (telle que ) sera automatiquement transmis à props.children en tant qu'attribut spécial Contient ses composants.
Cette propriété dispose de nombreuses méthodes disponibles, notamment React.Children.map, React.Children.forEach, React.Children.count, React.Children.only, React.Children.toArray.
L'état est similaire aux accessoires, mais il est privé et entièrement contrôlé par le composant lui-même. L'état est essentiellement un objet qui contient des données et détermine la manière dont le composant est rendu.
Lorsque vous souhaitez configurer des préréglages Webpack ou Babel ?
L'idée de base de Redux est que l'ensemble de l'état de l'application est conservé dans un seul magasin. le magasin est un simple javascript objet, et la seule façon de changer l'état de l'application est de déclencher des actions dans l'application, puis d'écrire des réducteurs pour que ces actions modifient État. L'ensemble de la transformation d'état se fait dans des réducteurs et ne devrait avoir aucun effet secondaire.
Store est un objet javascript qui enregistre l'état de l'ensemble de l'application. Dans le même temps, Store assume également les responsabilités suivantes :
Autorise l'accès à l'état via getState()
Exécuter les modifications d'état via dispatch(action)
Enregistrer les auditeurs via Subscribe(listener)
Gérer la déconnexion des auditeurs via la fonction renvoyée par Subscribe(listener)
Les actions sont un pur objet javascript, elles doivent avoir un Attribut type indiquant qu'ils sont en cours d'exécution. Le type d'action. Essentiellement, une action est la charge utile qui envoie les données de l'application au magasin.
Un réducteur est une fonction pure qui prend l'état précédent et une action comme paramètres et renvoie l'état suivant.
Redux thunk est un middleware qui vous permet d'écrire des créateurs d'actions qui renvoient une fonction au lieu d'une action. Si une certaine condition est remplie, thunk peut être utilisé pour retarder l'envoi d'une action (envoi), ce qui peut gérer l'envoi d'une action asynchrone (envoi).
Une fonction pure est une fonction qui ne dépend pas et ne change pas l'état des variables en dehors de sa portée. Cela signifie également qu'une fonction pure est la même. les paramètres renvoient toujours les mêmes résultats.
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!