Paparkan senarai objek dengan sifat dalam JSX
P粉486743671
2023-09-02 21:38:43
<p>Saya mempunyai kod berikut dalam komponen React saya: </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>
)</pra>
<p>Dalam kes ini, <code>pkgData</code> ialah susunan objek yang cuba menerangkan pakej dalam senario ini. Setiap objek mengandungi sifat rentetan <kod>nama</kod> dan sifat tatasusunan <kod>sumber</kod>, di mana setiap item juga merupakan objek. Saya ingin mencetak item dalam <code>sources</code> di bawah elemen <code>h3</code> HTML/JSX Berbilang di atas - sebarang bantuan akan sangat dihargai. </p>
<p>Saya telah cuba memanggil peta untuk setiap p, tetapi sama ada saya membungkusnya dengan <code>()</code> atau hanya <code>{}</code> Saya mendapat Ralat</p>
<pre class="brush:php;toolbar:false;">{p.map(s) ==> {
})</pre>
<p>Jadi kod div yang dihasilkan ialah: </p>
<pre class="brush:php;toolbar:false;"><div className="pkgList">
{pkgData.map((p) =>
<h3 key={p.name}>{p.name}</h3>
{p.peta((c) => {
})
)}
</div></pre>
<p>Apl My React tidak dibenarkan untuk disusun dengan jayanya. </p>
Seperti komponen biasa, anda hanya boleh mengembalikan 1 elemen jsx dalam peta. Jika anda ingin memaparkan berbilang elemen dalam fungsi peta, anda boleh membungkus kod dalam coretan tindak balas seperti ini:
Ralat peta
Pertama sekali, peta bersarang anda di dalam
pkgData.map
adalah salah. Keranap
itu sendiri bukan array. Peta sepatutnya kelihatan seperti ini,JSX Ralat
Kedua, seperti yang @David katakan dalam ulasan, anda tidak boleh mempunyai berbilang elemen peringkat atas kerana cara JSX berfungsi di bawah hud. Contohnya kod
Setaraf dengan ini
Jadi, jika anda mengembalikan berbilang elemen JSX di peringkat atas, React.createElement tidak akan berfungsi. Oleh itu, anda harus membalut kandungan di peringkat atas menggunakan beberapa teg seperti serpihan(), div, dsb.
Sebagai contoh,
Untuk rujukan sahaja: https://react.dev/reference /react/createElement#creating-an-element-without-jsx