JSX のプロパティを持つオブジェクトのリストを表示する
P粉486743671
P粉486743671 2023-09-02 21:38:43
0
2
505
<p>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> )</pre> <p>この場合、<code>pkgData</code> は、このシナリオでパッケージを記述しようとするオブジェクトの配列です。各オブジェクトには文字列プロパティ <code>name</code> と配列プロパティ <code>sources</code> が含まれており、各項目もオブジェクトです。 <code>sources</code> 内の項目を <code>h3</code> 要素の下に出力したいのですが (各項目には複数のプロパティがあります)、さらに追加する方法がわかりません。上記の複数の HTML/JSX - 助けていただければ幸いです。 </p> <p>各 p のマップを呼び出そうとしていますが、それを <code>()</code> でラップするか、単に <code>{}</code> でラップするかにかかわらず、たとえば、エラー</p>が発生します <pre class="brush:php;toolbar:false;">{p.map((s) => { })</pre> <p>したがって、生成される div コードは次のようになります: </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>React アプリは正常にコンパイルできません。 </p>
P粉486743671
P粉486743671

全員に返信(2)
P粉903052556

通常のコンポーネントと同様、マップ内で返すことができる jsx 要素は 1 つだけです。 Map 関数で複数の要素をレンダリングする場合は、次のように反応スニペットでコードをラップできます:

リーリー
いいねを押す +0
P粉287254588

地図エラー

まず第一に、pkgData.map 内のネストされたマップが間違っています。 p 自体は配列ではないためです。 マップは次のようになります。

リーリー

JSXエラー

第二に、@David がコメントで述べたように、JSX が内部で動作する仕組みのため、複数のトップレベル要素を持つことはできません。 たとえばコード

リーリー

はこの

と同等です リーリー

したがって、最上位で複数の JSX 要素を返す場合、React.createElement は機能しません。 したがって、fragment()、div などのタグを使用して、最上位でコンテンツをラップする必要があります。

###例えば、### リーリー

参考専用:

https://react.dev/reference /react/createElement#creating-an-element-without-jsx

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート