Maison > interface Web > Questions et réponses frontales > Les premières lettres des composants de réaction doivent-elles être en majuscules ?

Les premières lettres des composants de réaction doivent-elles être en majuscules ?

青灯夜游
Libérer: 2022-07-14 15:50:59
original
2391 Les gens l'ont consulté

La première lettre du composant React doit être en majuscule ; car React distingue s'il s'agit d'un composant React ou d'un élément dom selon que la première lettre est en majuscule. La syntaxe JSX est utilisée dans React, mais le navigateur ne peut pas reconnaître la syntaxe JSX, et la syntaxe JSX doit être échappée via Babel et si la première lettre du composant est en minuscule, elle sera reconnue comme une balise DOM native. la balise inexistante est Une erreur sera signalée.

Les premières lettres des composants de réaction doivent-elles être en majuscules ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, version React18, ordinateur Dell G3.

Lors de la déclaration d'un composant dans React, la première lettre du nom du composant doit-elle être en majuscule ? Pourquoi?

Obligatoire, React distingue s'il s'agit d'un composant React ou d'un élément dom selon que la première lettre est en majuscule.

J'ai déjà rencontré une telle erreur lors de l'écriture de React

Warning: The tag  is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter.
in app (at src/index.tsx:6)
Copier après la connexion

C'est parce que le composant React n'est pas en majuscule.

La syntaxe JSX est utilisée dans React, mais le navigateur ne peut pas reconnaître la syntaxe JSX, la syntaxe JSX doit donc être échappée via babel et si la première lettre du composant est minuscule, elle sera reconnue comme une balise DOM native, créer un inexistant L'étiquette signalera une erreur.

Principe : Conversion de la syntaxe JSX en vrai DOM

Nous écrivons tous la syntaxe JSX dans React De la syntaxe JSX au vrai DOM sur la page, nous devons probablement passer par les étapes suivantes : JSX. syntaxe —> DOM virtuel (objet JS) —> JSX语法 —> 虚拟DOM(JS对象) —> 真实DOM

因为浏览器是无法识别JSX语法的,因此我们需要通过 babel 对JSX语法进行转义,然后才能生成虚拟DOM对象,而原因就是在这里。我们可以看一下babel是如何转义JSX语法的:

Les premières lettres des composants de réaction doivent-elles être en majuscules ?

Les premières lettres des composants de réaction doivent-elles être en majuscules ?

babel在进行转义JSX语法时,是调用了 React.createElement() 这个方法,这个方法需要接收三个参数:type, config, children第一个参数声明了这个元素的类型。

对比上面两张图,图一中,我在创建自定义组件时没有首字母大写Parce que le navigateur ne peut pas reconnaître la syntaxe JSX, nous devons échapper à la syntaxe JSX via babel avant de pouvoir générer un objet DOM virtuel, et la raison est ici. Nous pouvons voir comment Babel échappe à la syntaxe JSX :

Les premières lettres des composants de réaction doivent-elles être en majuscules ?

 Les premières lettres des composants de réaction doivent-elles être en majuscules ?

babel Lors de l'échappement de la syntaxe JSX, appelle la méthode React.createElement(). Cette méthode doit recevoir trois paramètres : type, config , children .

Le premier paramètre déclare le type de cet élément.

En comparant les deux images ci-dessus,

Dans l'image 1

, lorsque j'ai créé le composant personnalisé, je n'ai pas mis en majuscule la première lettre. Babel le traite comme une chaîne lors de l'échappement et le transmet ;

Dans la figure 2, j'ai mis la première lettre en majuscule et Babel lui a transmis une variable lors de l'échappement.

Le problème est ici,

Si une chaîne est passée, alors lors de la création de l'objet DOM virtuel, React pensera qu'il s'agit d'une simple balise HTMLLes premières lettres des composants de réaction doivent-elles être en majuscules ?, mais ce n'est évidemment pas une simple balise HTML, alors créez-en une. 'il n'existe pas signalera certainement une erreur.

Si la première lettre est en majuscule, elle sera transmise en tant que variable. À ce moment-là, React saura qu'il s'agit d'un composant personnalisé, il ne signalera donc pas d'erreur.

🎜Donc : 🎜🎜🎜De même, parce que la mauvaise écriture ci-dessus est en minuscules, babel génère une horloge comme étiquette, et cet élément n'existe pas en html, il existe donc d'une manière étrange🎜🎜 🎜🎜🎜🎜【Recommandations associées : 🎜Tutoriel vidéo Redis🎜】🎜

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal