2017-05-01 1 views
1

私はMarvelAPIからデータを取得していますが、私がアクセスしているキーが利用可能かどうかは保証されていません。 だから私はそれらにアクセスする前にifステートメントで各キーをチェックしています。リアクションレンダリング前にネストされたJSONキーを確認する

ご覧のとおり、以下のコードは非常に醜いです。これを行うためのより良い/標準的な方法がありますか?各キーの

renderCharacterNames(detail) { 
    console.log('detail', detail) 
    if (detail && detail[0] && detail[0].characters && detail[0].characters.items && detail[0].characters.items.length > 0) { 
     return (
      <div> 
       {detail[0].characters.items.map((obj, index) => { 
        return <li key={index}>{obj.name}</li> 
       })} 
      </div> 
     ) 
    } else { 
     return <div>No Character Name</div> 
    } 
} 

renderComicDetail() { 
    var detail = this.props.comicDetail; 
    if (!detail) { 
     return (
      <div>No Data Yet (loading?)</div> 
     ) 
    } 
    return (
     <div> 
      {this.renderCharacterNames(detail)} 
     </div> 
    ) 
} 

console

+0

なぜあなたは 'detail [0]'にしかアクセスしていないのですか? –

+0

APIは、常にすべてのデータを含む長さ1の配列を返すようです。だから私は今のところそれにアクセスしているだけです。このデータは、comiId = someIdでAPIにクエリを実行すると戻されます。各IDは1つの漫画に対応しているため、詳細情報[0]は合理的です(今のところ)。より多くのケースを処理できるように変更することができますが、これは私がここにある主な質問ではありません。乾杯 – ErnieKev

答えて

0

設定default propertiesので、あなたは彼らが未定義であることを心配する必要はありません。私はデフォルトの名前を ""にし、文字を空の配列にします。

Detail.defaultProps = { 名前: ''、 文字:[] };

関連する問題