2017-12-06 4 views
0

Ich versuche, Elemente aus meinem Zustand (Array) zu rendern, aber sie wollen nicht auf dem Bildschirm zu rendern. Wenn ich console.log(b.name) führe, protokolliert er meine Namen in der Konsole.Elemente von array.map rendern nicht

renderAllElements() { 
    this.state.myData.map(b => { 
     return(
      <div> 
       <h4>{b.name}</h4> 
      </div> 
     ) 
    }) 
} 

render() { 
    return (
     <div> 
      {this.renderAllElements()} 
     </div> 
    ) 
} 
+1

Was ist in 'this.state.myData'? – Nope

+3

geben Sie die Karte zurück. – Chris

Antwort

4

Sie benötigen eine Karte, um wieder zurück:

renderAllElements() { 
    return this.state.myData.map(b => { 
     return(
     <div> 
      <h4>{b.name}</h4> 
     </div> 
    ) 
    }) 
} 
+0

Oh ja! Ich bin so abgelenkt: D – Mac

+0

@Mac Schätze diese Fehler sind bei allen Entwicklern üblich: D – Fawaz

2

Sie Ihre renderAllElements() Funktion in Ihrem Render-Methode korrekt aufgerufen wird. Sie scheinen auch Ihre Array-Variable korrekt zuzuordnen, aber die Funktion gibt nach der Beendigung des Mappings nichts mehr zurück, um gerendert zu werden.

einfach eine Rückkehr für die Kartenfunktion hinzufügen und es sollte funktionieren:

renderAllElements() { 
    return this.state.myData.map(b => { 
     return(
     <div> 
      <h4>{b.name}</h4> 
     </div> 
    ) 
    }) 
} 

Einzeiler Alternative:

renderAllElements() { 
    return this.state.myData.map(b => <div><h4>{b.name}</h4></div>); 
} 
1

Da Sie bereits Array-Funktionen nutzen zu können alternativ ohne geschweifte Klammern neu schreiben können :

renderAllElements =() => (
    this.state.myData.map(b => (
     <div> 
      <h4>{b.name}</h4> 
     </div> 
    )); 
) 

So müssen Sie nicht über Rückkehr Anweisung erinnern :)