Son processus simple;
Voici la méthode de rendu Origin que je veux qu'elle soit (je veux que ma table soit en dehors de div):
mais le compilateur jsx ne le permet pas pour une raison quelconque?
mais si je déplace la table à l'intérieur de l'élément div; tout va bien.
donc seulement diff est la place de la table. pourquoi jsx interfère ce processus? pourquoi c'est nécessaire?
Dans JSX
, nous ne pouvons renvoyer qu'un seul élément html
à partir de return
, nous ne pouvons pas renvoyer plusieurs éléments. div
ou par tout autre composant d'encapsulation.
La même chose se passe dans votre 1er cas, vous retournez 2 éléments, un div
et un table
. lorsque vous les emballez dans un div
tout fonctionne correctement.
Même règle à suivre pour conditional rendering
de composants.
Exemple:
Correct:
{ 1==1 /* some condition */ ?
<div>
True
</div>
:
<div>
False
</div>
}
Wrong:
{ 1==1 /* some condition */ ?
<div>
True 1
</div>
<div>
True 2
</div>
:
<div>
False 1
</div>
<div>
False 2
</div>
}
Une autre cause de cette erreur est la fin accidentelle de votre ligne par une virgule au lieu d'un point-virgule. Cela peut se produire si vous faites une erreur lors du refactoring de votre code.
Ceux-ci donnent des erreurs
return <div>hi</div>, // error
return (<div>hi</div>,) // error
Ce sont corrects:
return <div>hi</div>; // ok
return (<div>hi</div>) // ok
return (<div>hi</div>); // ok
Cette erreur est plus complexe dans ce cas, car elle met en évidence le bloc entier JSX, au lieu de la virgule.