2017-02-13 7 views
-2

MAP es6は反応するオブジェクトの配列では機能しません。私は、にconsole.log(アイテム)を行うと、私の私はマップ内this.skillsですが、再びarrayあるMAP es6は反応しているオブジェクトの配列では機能しませんか?

{item.skills.map(item => 
    <p>{item.skills.name}</p> 
)} 
+2

このオブジェクトは、あなたの 'item' JSONは多少の誤差を持っているようだ – brk

+0

エラーがあり、中に同じことを検証してみ' –

+0

あなたのJSONオブジェクトは有効ではありませんjsonlint.com'。あなたはhttp://www.jsoneditoronline.org/を使って正当性をチェックすることができます。 –

答えて

0

理由を行うJSXのレンダリングでとても

{ 
"skills": [{ 
    "field": { 
     "id": 1, 
     "name": { 
      "en": "Web Developer" 
     } 
    }, 
    "skills": [{ 
     "id": 2, 
     "name": { 
      "en": "Blog" 
     } 
    }] 
}, { 
    "field": { 
     "id": 3, 
     "name": { 
      "en": "UI/ UX Designer" 
     } 
    }, 

    "skills": [ { 
     "id": 4, 
     "name": { 
      "en": "Web Interface" 
     } 
    }] 
}] 

}

次の結果を得ます名前がobjectの場合は、最初にJSON構造を変更する必要があります。name.enを使用する必要がある場合は、

let data = { 
 
    "skills": [{ 
 
     "field": { 
 
      "id": 1, 
 
      "name": { 
 
       "en": "Web Developer" 
 
      } 
 
     }, 
 
     "skills": { 
 
      "id": 2, 
 
      "name": { 
 
       "en": "Blog" 
 
      } 
 
     } 
 
    },{ 
 
     "field": { 
 
      "id": 3, 
 
      "name": { 
 
       "en": "UI/ UX Designer" 
 
      } 
 
     }, 
 

 
     "skills": { 
 
      "id": 4, 
 
      "name": { 
 
       "en": "Web Interface" 
 
      } 
 
     } 
 
    }] 
 
} 
 

 
data.skills.map((item)=>{ 
 
    console.log(item.skills.name.en); 
 
})

あなたはarrayとしてskillsskillsを定義し、それが唯一の項目が含まれます場合は、このような名前にアクセスする必要があります。

item.skills[0].name.en

そうでなければ再度mapを実行して名前にアクセスする必要があります。このように:

data.skills.map((item)=>{ 
    item.skills.map((el)=>{ 
     console.log(el.name.en); 
    }); 
}) 
+0

この問題で何か問題に直面していますか? –

0

skills[n].skillsは配列です。そして構造を変更するか、最初のmapメソッドに.mapを再度実行する必要があります。このように:

{item.skills.map(item => 
    item.skills.map(skill => 
    <p>{skill.name[en]}</p> 
    ) 
)} 
関連する問題