2017-05-23 17 views
2
{normalizedData.map(obj => 
    <div key={obj.display_date_numberic}> 
     <div>{obj.display_date_numberic}</div> 
    </div> 

    {!isEmpty(obj.applicants) && obj.map(obj2 => 
     <div className="events">{obj2.person.name}</div> 
    )} 
)} 

リンクisEmptyでエラーが発生しました。なぜマップ内にマップを作成できないのですか?私はオブジェクトの配列内にオブジェクトの配列を持っています。jsx内のマップ内のマップを使用

+0

を使用する必要あなたはどのようなエラーを取得していないのですか? – Aron

+0

オブジェクトに 'map'を使うことはできません - ' map'は配列メソッドです。 –

+0

@BartekFryzowiczオブジェクトの配列は配列 –

答えて

0

理由は、render複数の要素にしようとしている、我々はそれを行うことはできません、我々は1つの要素だけを返すことができます。だから、すべてのロジックと、このような1 div内の要素をラップ:obj.applicantsを想定し

{normalizedData.map(obj => 
    <div key={obj.display_date_numberic}> 
     <div>{obj.display_date_numberic}</div> 

     {Array.isArray(obj.applicants) && obj.applicants.map(obj2 => 
      <div className="events">{obj2.person.name}</div> 
     )} 
    </div> 
)} 

は、任意の値が適切な配列やない

注であるかどうかをチェックするために​​を使用し、arrayです:私たちは使用することができますmapのみarrayにはありません。objectであるため、objがオブジェクトで、Object.keys(obj)を使用してすべてのキーのarrayを取得する場合は、mapを使用してください。

+0

配列メソッドなので 'map'はオブジェクト上で使用できません。上の例では 'obj'がオブジェクトであるようです... –

+1

@BartekFryzowicz、ありがとう、答えを更新しました: –

+0

実際には私のマップに問題はありません。今はisEmptyが定義されていません。 –

0

だけのアドバイスは、あなたの代わりにあなたのコードにHACE map

1

明らかに誤りのforを使用することができますが、内部マップにobj.applicantsにマッピングすることなくobjをしてから、単一の要素を返すべきである、ということですまた、アウターマップ

obj.applicantsが配列の場合、isEmpty

{normalizedData.map(obj => 
    <div> 
    <div key={obj.display_date_numberic}> 
     <div>{obj.display_date_numberic}</div> 
    </div> 

    { obj.applicants.map(obj2 => 
     <div className="events">{obj2.person.name}</div> 
    )} 
    </div> 
)} 
関連する問題