検索

ホームページ  >  に質問  >  本文

JSX のプロパティを持つオブジェクトのリストを表示する

<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粉486743671P粉486743671544日前531

全員に返信(2)返信します

  • P粉903052556

    P粉9030525562023-09-03 16:50:30

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

    リーリー

    返事
    0
  • P粉287254588

    P粉2872545882023-09-03 15:36:54

    地図エラー

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

    リーリー

    JSXエラー

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

    リーリー

    はこの

    と同等です リーリー

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

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

    参考専用:

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

    返事
    0
  • キャンセル返事