Je ne suis pas sûr que ce soit techniquement correct, mais comme un mnémonique, vous pouvez vous souvenir que : "Chaque élément JSX retourné doit être un seul élément JSX".
La plupart du temps, il suffit d'envelopper ce que vous avez dans une paire de balises <>
(ou toute autre paire de balises arbitraire) pour résoudre le problème. Par exemple, si vous renvoyez deux
s depuis la méthode de rendu d'un composant, ce ne sera pas correct, cependant, si vous enveloppez ces deux dans une paire de <>
, cela sera probablement résolu.
Mais notez que parfois cela peut devenir un peu plus vague, par exemple, en imbriquant deux maps ES6 l'une dans l'autre, par exemple :
{
this.categorizedData.map(
(catgGroup) => (
{catgGroup}
this.categorizedData[catgGroup].map(
(item) => (
{item.name}
{item.price}
)
)
)
)
}
Peut être résolu comme ceci :
{
this.categorizedData.map(
(catgGroup) => (
<> // <--- Remarquez ceci, il enveloppera tous les éléments JSX ci-dessous dans un seul élément JSX.
{catgGroup}
{this.categorizedData[catgGroup].map( // <--- Remarquez également ici, nous l'avons enveloppé entre accolades, car c'est une "expression" à l'intérieur de JSX.
(item) => (
{item.name}
{item.price}
)
)}
)
)
}
P.S. : (De la documentation) Vous pouvez également renvoyer un tableau d'éléments à partir d'un composant React :
render() {
// Pas besoin d'envelopper les éléments de liste dans un élément supplémentaire !
return [
// N'oubliez pas les clés :slight_smile:
Premier élément,
Deuxième élément,
Troisième élément,
];
}
0 votes
Quelle version de React utilisez-vous ?
0 votes
@MattHolland React 16.1.1