Sie kehren nicht zurück. Ändern
this.state.data.map(function(item, i){
console.log('test');
return <li>Test</li>;
})
let durationBody = duration.map((item, i) => {
return (
<option key={i} value={item}>
{item}
</option>
);
});
Sie kehren implizit zurück undefined
. Sie müssen das Element zurückgeben.
this.state.data.map(function(item, i){
console.log('test');
return <li>Test</li>
})
Fügen Sie Dmitrys Antwort hinzu, wenn Sie eindeutige Schlüssel-IDs nicht manuell handhaben möchten, können Sie verwenden React.Children.toArray
wie in der vorgeschlagen Dokumentation reagieren
Kinder.aufArray.reagieren
Gibt die untergeordnete undurchsichtige Datenstruktur als flaches Array mit Schlüsseln zurück, die jedem untergeordneten Element zugewiesen sind. Nützlich, wenn Sie Sammlungen von untergeordneten Elementen in Ihren Rendermethoden manipulieren möchten, insbesondere wenn Sie this.props.children neu anordnen oder in Scheiben schneiden möchten, bevor Sie es weitergeben.
Notiz:
React.Children.toArray()
ändert Schlüssel, um die Semantik verschachtelter Arrays beizubehalten, wenn Listen von untergeordneten Elementen reduziert werden. Das heißt, toArray stellt jedem Schlüssel im zurückgegebenen Array ein Präfix voran, sodass der Schlüssel jedes Elements auf das Eingabearray beschränkt ist, das es enthält.
<div>
<ul>
{
React.Children.toArray(
this.state.data.map((item, i) => <li>Test</li>)
)
}
</ul>
</div>
Verwendung einer zustandslosen Funktionskomponente Wir werden this.state nicht verwenden. So was
{data1.map((item,key)=>
{ return
<tr key={key}>
<td>{item.heading}</td>
<td>{item.date}</td>
<td>{item.status}</td>
</tr>
})}
Ich bin auf ein Problem bei der Implementierung dieser Lösung gestoßen.
Wenn Sie eine benutzerdefinierte Komponente haben, die Sie durchlaufen möchten, und Sie den Zustand freigeben möchten, ist sie nicht verfügbar, da der .map()-Bereich den allgemeinen state()-Bereich nicht erkennt. Ich bin zu dieser Lösung gekommen:
`
class RootComponent extends Component() {
constructor(props) {
....
this.customFunction.bind(this);
this.state = {thisWorks: false}
this.that = this;
}
componentDidMount() {
....
}
render() {
let array = this.thatstate.map(() => {
<CustomComponent that={this.that} customFunction={this.customFunction}/>
});
}
customFunction() {
this.that.setState({thisWorks: true})
}
}
class CustomComponent extend Component {
render() {
return <Button onClick={() => {this.props.customFunction()}}
}
}
In Konstruktorbindung ohne this.that Jede Verwendung einer Funktion/Methode innerhalb der Root-Komponente sollte mit verwendet werden this.that