Ich bin neu zu Reagieren und ich werde ein wenig verrückt versuchen, herauszufinden, was ich falsch mache. Ich versuche, ein JSON-Array zu durchlaufen, das ich von einem Ajax-Aufruf erhalte. Wenn ich die Daten verspotten es funktioniert perfekt, aber wenn ich einen Ajax-Aufruf machen den exakt gleichen Daten, um es mir undefined is not a function (evaluating 'this.state.list.map()')
Reagieren js map() undefined ist keine Funktion
das Array gibt:
[ { "name": "drop1" }, { "name": "drop2" }, { "name": "drop3" } ]
die Funktion:
var List = React.createClass({
getInitialState: function() {
return {data: {}};
},
componentDidMount: function() {
$.ajax({
url: ACTUAL_URL,
dataType: 'json',
success: function(data){
this.setState({data: data});
}.bind(this),
error: function(xhr, status, err){
console.error(url, status, err.toString());
}.bind(this)
});
},
render: function() {
return (
<ul className="droplist">
{this.state.data.map(function(l){
return (<li>{l.name}</li>)
})}
</ul>
);
}
});
Jede Hilfe wird sehr geschätzt.
Zusätzlich zur Verfügung gestellt Antwort: Normalerweise führen Sie keine Ajax-Anfragen von einer Komponente aus. – zerkms
@zerkms Nicht einverstanden, normalerweise würden Sie, wenn Sie nicht Flux verwenden. –
@limelights auch wenn Sie Flux nicht folgen - Sie müssen ein anderes architektonisches Designmuster verwenden, das Präsentation von Persistenz und Geschäftslogik trennt. – zerkms