Afficher la liste des objets avec des propriétés dans JSX
P粉486743671
2023-09-02 21:38:43
<p>J'ai le code suivant dans mon composant React : </p>
<pre class="brush:php;toolbar:false;"><div className="mainApp">
<div className="pkgsList">
{pkgData.map((p) =>
<h3 key={p.name}>{p.name}</h3>
)}
</div>
</div>
)</pré>
<p>Dans ce cas, <code>pkgData</code> est un tableau d'objets qui tente de décrire le package dans ce scénario. Chaque objet contient une propriété de chaîne <code>name</code> et une propriété de tableau <code>sources</code>, où chaque élément est également un objet. Je souhaite imprimer les éléments dans <code>sources</code> sous l'élément <code>h3</code> (chaque élément a plusieurs propriétés), mais je n'arrive pas à comprendre comment en ajouter davantage. le HTML/JSX multiple ci-dessus - toute aide serait grandement appréciée. </p>
<p>J'ai essayé d'appeler la carte pour chaque p, mais que je l'enveloppe dans <code>()</code> ou simplement <code>{}</code> J'obtiens une erreur</p>
<pre class="brush:php;toolbar:false;">{p.map((s) => {
})</pré>
<p>Le code div généré sera donc : </p>
<pre class="brush:php;toolbar:false;"><div className="pkgList">
{pkgData.map((p) =>
<h3 key={p.name}>{p.name}</h3>
{p.map((c) => {
})
)}
</div></pre>
<p>Mon application React n'est pas autorisée à se compiler correctement. </p>
Comme les composants normaux, vous ne pouvez renvoyer qu'un seul élément jsx dans la carte. Si vous souhaitez afficher plusieurs éléments dans la fonction map, vous pouvez envelopper le code dans un extrait de réaction comme celui-ci :
Erreur de carte
Tout d'abord, votre carte imbriquée à l'intérieur
pkgData.map
est fausse. Parce quep
en soi n'est pas un tableau. La carte devrait ressembler à ceci,Erreur JSX
Deuxièmement, comme @David l'a dit dans les commentaires, vous ne pouvez pas avoir plusieurs éléments de haut niveau en raison de la façon dont JSX fonctionne sous le capot. Par exemple le code
Équivalent à ceci
Donc, si vous renvoyez plusieurs éléments JSX au niveau supérieur, React.createElement ne fonctionnera pas. Par conséquent, vous devez envelopper le contenu au niveau supérieur en utilisant certaines balises telles que fragments(), div, etc.
Par exemple,
Pour référence uniquement : https://react.dev/reference /react/createElement#creating-an-element-without-jsx