2017-05-01 3 views
1

Ich erhalte Daten von MarvelAPI und es gibt keine Garantie, ob der Schlüssel, auf den ich zugreife, verfügbar ist oder nicht. Also überprüfe ich jeden Schlüssel mit einer if-Anweisung, bevor ich darauf zugreife.Reagierung des verschachtelten JSON-Schlüssels vor dem Rendern

Wie Sie sehen, sieht der Code unten sehr hässlich aus. Gibt es einen viel besseren/Standard Weg dies zu tun?

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

Gibt es einen Grund, warum Sie nur auf 'detail [0]' zugreifen? –

+0

Die API scheint immer ein Array der Länge 1 mit allen enthaltenen Daten zurückzugeben. Ich betrachte es gerade so. Diese Daten kommen zurück, wenn ich die API mit comiId = someId abfrage, da jede ID einem Comic entspricht, denke ich, dass der Zugriff auf Details [0] vernünftig wäre (vorerst). Beachten Sie, dass ich es ändern kann, so dass es mehr Fälle behandeln kann, aber das ist nicht die Hauptfrage, die ich hier habe. Prost – ErnieKev

Antwort

0

für jede Taste Set default properties, so haben Sie, um sie keine Sorgen über nicht definiert ist. Ich würde den Standardnamen auf "" und die Zeichen auf ein leeres Array setzen.

Detail.defaultProps = { Name: '', Zeichen: [] };

Verwandte Themen