Cours intensif pour débutants, 2e partie

Dans la première partie de cette série de didacticiels, nous avons utilisé créer-réagir-app outil pour créer un exemple d'application de travail comme point de départ pour notre application de galerie 'Movie Mojo'.

Dans la deuxième partie, nous verrons comment ajouter notre premier composant personnalisé pour afficher des cartes de film individuelles. Nous verrons également comment l'utilisation d'accessoires nous permet de personnaliser l'apparence des composants en transmettant des données plutôt que de les coder en dur..

Cela démontre la flexibilité et la réutilisabilité des composants, et comment ils peuvent être utilisés comme blocs de construction puissants dans vos applications React..

Notre premier composant

OK, créons un composant! Pour commencer, nous allons garder les choses assez simples et refactoriser l'en-tête HTML dans son propre composant.

Les meilleures pratiques de Modern React recommandent de séparer chaque composant de votre application dans un fichier séparé. Nous suivrons ce principe donc, dans vos projets / src / composants / dossier, créez un nouveau fichier appelé Header.js et ouvrez-le dans un éditeur de texte.

Au début des fichiers de composants, nous commençons toujours par importer les bibliothèques requises, d'autres composants (car nous pouvons imbriquer des composants) et des ressources supplémentaires dont nous avons besoin (par exemple, des styles). le importation déclaration fait partie de ES6 et nous permet de garder nos projets hautement modulaires.

Pour notre

 composant, il suffit d'importer la bibliothèque React, ce que nous pouvons faire avec cette instruction:

importer Réagir, Composant de 'réagir';

Ceci importe la totalité de la bibliothèque React et le rend disponible via le Réagir variable. Il importe également le Composant objet directement afin que nous puissions l'utiliser sans avoir à qualifier spécifiquement avec un précédent Réagir. référence d'objet.

En d'autres termes, si nous n'importons pas explicitement le Composant objet alors nous devrions y accéder comme suit:

Composant de réaction

Mais parce que nous avons importé Composant directement, nous pouvons simplement l'utiliser seul, sans aucune référence à la Réagir variable. Peu importe lequel vous utilisez, et c'est juste par préférence.

Ensuite, pour créer le composant, nous étendons la Composant objet pour créer une nouvelle classe qui définit notre

 composant. Après le importation déclaration, type:

la classe Header étend Component  export par défaut App;

Ici, nous utilisons une classe ES6 comme conteneur de composants. Les classes sont un excellent moyen d'encapsuler tout le code nécessaire pour décrire votre composant..

Vous avez peut-être également remarqué que le fichier de composant se termine par une instruction d'exportation. Comme vous vous en doutez, cela exporte notre composant et le rend disponible pour les autres fichiers de notre projet..

Au minimum, tous les composants de React doivent avoir une méthode de rendu, qui retourne du balisage. Il peut s’agir de HTML, d’autres composants de React ou d’un mélange des deux..

Ajoutez ceci dans votre classe de composant:

render () return React.createElement ('div', null, 'Bonjour, c'est un composant de React!'); 

le React.createElement () Cette méthode crée un élément HTML (un

 dans ce cas) et y ajoute du contenu. Enregistrer les modifications Header.js et ouvrir App.js.

Pour utiliser un composant React dans un autre composant, nous devons d'abord l'importer. Ajoutez-le donc à la liste des instructions d'importation en haut de App.js:

importer l'en-tête de './Header';

Notez que vous n'avez pas besoin d'ajouter le .js extension de fichier comme cela est supposé. Aussi, parce que le

 composant est dans le même dossier que notre  composant, nous n'avons pas besoin de spécifier le chemin complet.

En fait, si vous essayez d'utiliser importer l'en-tête de './components/Header'; de l'Intérieur App.js, vous aurez une erreur de compilation.


Nous pouvons maintenant ajouter le

 composant à l'intérieur de l'instruction de retour, comme tout élément HTML. Cependant, il y a une mise en garde. Vous pouvez seulement renvoyer un élément de niveau supérieur dans une méthode de retour de composants.

Donc ce n'est pas permis:

render () return ( 
)

Si vous voulez renvoyer plusieurs éléments, vous devez tous les envelopper dans un seul élément wrapper:

render () return ( 
)

Alors assurez-vous que vous ajoutez le

 composant à l'intérieur du
 élément pour éviter les erreurs.

La classe App étend le composant render () return ( 

Découvrez votre film Mojo!

Bienvenue dans l'application 'Movie Mojo' React!

)

Cela se traduira par notre

 composant en cours de rendu.

Pour compléter le

 composant, nous allons supprimer le bloc HTML suivant de App.js et l'ajouter à Header.js.

Découvrez votre film Mojo!

Cependant, vous avez peut-être remarqué qu'il y a un problème. Dans App.js la  La méthode de rendu composant renvoie ce qui ressemble à HTML. Pourtant dans Header.js il n'y a qu'un seul appel à React.createElement (). Que se passe-t-il?

La réponse est JSX. Dans App.js Nous utilisons JSX pour écrire une syntaxe de type HTML afin de définir la sortie de nos composants. Comparez cela avec notre définition de composant pour Header.js.

React.createElement ('div', null, 'Bonjour, c'est un composant de React!');

C'est ainsi que nous devons écrire des composants React sans JSX. En fait, c'est ce en quoi JSX est compilé avant de pouvoir être rendu au navigateur..

Vous n'êtes pas obligé d'utiliser JSX du tout pour vos composants React; c'est entièrement à vous. Mais presque tous les composants que vous rencontrerez seront écrits en JSX parce que c'est tellement plus facile à écrire.

Il est également très lisible par les nouveaux utilisateurs de votre code. Imaginez avoir à étudier un projet React contenant des dizaines de composants différents écrits en JavaScript simple!

Il n’est donc pas surprenant que nous utilisions JSX pour les définitions de composants dans le reste de cette série de didacticiels..

Allez-y et remplacez le React.createElement () appel avec l'équivalent JSX nous avons copié de App.js. Votre Header.js Le fichier devrait maintenant ressembler à ceci:

importer Réagir, Composant de 'réagir'; class En-tête étend Component render () return ( 

Découvrez votre film Mojo!

) export par défaut Header;

Alors que JSX nous laisse beaucoup plus de flexibilité dans l'écriture de nos composants, gardez à l'esprit que ce n'est pas du HTML que nous écrivons, mais une abstraction de celui-ci..

Vous pouvez le voir dans l'extrait de code ci-dessus. Avis dans le

 tag nous avons utilisé nom du cours plutôt que classe indiquer où nous voulons déclarer une classe CSS? C’est parce que tout le JSX est compilé en JavaScript pur, et classe est un mot réservé en ES6 JavaScript.

Modifions également les styles d'en-tête. Ouvrir App.css et éditer le .En-tête d'application Classe CSS à être:

.App-header background-color: steelblue; hauteur: 70px; rembourrage: 20px; Couleur blanche; 

Ceci met à jour la couleur de fond de l'en-tête et réduit la hauteur.

Accessoires de composants

Jusqu'ici, notre

 le composant est statique. C'est-à-dire qu'il affiche un contenu fixe qui ne change jamais. Mais les composants peuvent être rendus dynamiques et afficher le contenu qui y est passé via des accessoires. Cela rend soudainement les composants beaucoup plus utiles, car ils deviennent génériques et réutilisables.

Pensez aux accessoires de composants similaires aux balises HTML. Par exemple, un

 la balise peut avoir des attributs pour identifiant, classe, style et ainsi de suite qui nous permettent d'attribuer des valeurs uniques à ce particulier
 élément.

Nous pouvons faire la même chose pour les composants React. Supposons que nous ne voulions pas que notre en-tête produise le texte fixe "Découvrez votre film Mojo!" tout le temps. Ne serait-il pas préférable que notre en-tête puisse afficher du texte?

Contrairement aux attributs HTML, nous pouvons nommer nos accessoires de composant comme bon nous semble. À l'intérieur App.js, mettre à jour le

 tag pour être:

Ensuite, mettez à jour le

 composant à utiliser le texte soutenir.

this.props.text

Cela a pour résultat que notre en-tête affiche le texte ajouté à la liste. texte appui dans App.js.

Regardons de plus près comment nous avons référencé le texte support à l'intérieur Header.js en utilisant:

this.props.text

Les accolades indiquent simplement à JSX que nous souhaitons évaluer du code JavaScript. Cela le distingue du texte. Si nous n'avons pas utilisé d'accolades, le littéral de chaîne this.props.text serait sorti, ce qui n'est pas ce que nous voulons.

le ce le mot clé fait référence à la Entête classe de composant, et les accessoires est un objet qui contient toutes les valeurs transmises de 

. Dans notre cas, le les accessoires l'objet ne contient qu'une entrée, mais vous pouvez en ajouter autant que vous le souhaitez en pratique.

Notre

 Le composant est maintenant beaucoup plus générique et ne contient pas de chaîne codée en dur. C'est une bonne pratique lorsque vous écrivez des composants React. Plus vous les créez génériques, plus ils sont réutilisables..

C'est une bonne nouvelle lors du développement de futures applications React, car vous pouvez réutiliser des composants de projets précédents pour ne pas avoir à tout écrire à partir de zéro..

Nous avons utilisé les accessoires ci-dessus pour passer une chaîne fixe dans le

 composant, mais les accessoires peuvent également transmettre des variables, des références de fonction et des états à des composants.

Pour envoyer une variable via des accessoires, nous pourrions faire quelque chose comme ceci, où en-tête est une variable:

Inspection des composants de la réaction

Il existe un outil très utile pour le navigateur Chrome qui vous permet d'inspecter des informations sur votre application React..

Les outils de développement par défaut vous permettent uniquement de visualiser les éléments HTML normaux, mais avec l'extension Outils de développement React installée, vous pouvez parcourir tous les composants React de votre application..

Une fois installé, ouvrez les outils de votre inspecteur de navigateur, puis cliquez sur le nouveau logiciel disponible. Réagir languette. Notez qu'au lieu d'éléments HTML, vous voyez la hiérarchie des composants React dans votre application. Clique sur le  composant pour le sélectionner.

Une fois sélectionné, les informations sur un composant sont affichées dans la fenêtre à droite. le  composant n'a pas d'accessoires et donc la fenêtre est vide. Mais si vous sélectionnez le

 composant à l'intérieur  alors vous verrez le prop 'texte' que nous avons transmis.

Les outils de développement de React sont très utiles pour le débogage, en particulier lorsque vous développez des applications React plus complexes. Il est donc utile de s'habituer à les utiliser sur des applications plus simples..

Vous pouvez également utiliser les outils de développement de React pour inspecter l'état de votre application, ce que nous aborderons dans le prochain tutoriel..

Conclusion

Dans ce tutoriel, vous avez appris à diviser votre application en composants distincts pour la rendre plus modulaire. Les accessoires de composant vous permettent de transmettre des valeurs à des composants individuels, de la même manière que vous ajoutez des attributs à des éléments HTML..

Nous avons également vu comment tirer parti des nouveaux outils d’inspecteur de navigateur pour examiner les données relatives aux composants et aux accessoires..

Dans la partie 3, nous ajouterons un état à notre application pour nous aider à gérer nos données plus efficacement..