Ich möchte einige Werte aus einer JSON-Datei abrufen und sie in mehrere Komponenten rendern. Dieser Code scheint nicht zu funktionieren. Bitte schlagen Sie Änderungen vor. wahrscheinlich gibt es einige Probleme mit dem Umfang.Rendern von JSON-Daten in mehreren Komponenten von react.js
var App = React.createClass({
getInitialState: function(){
return { myData: [] }
},
showResults: function(response){
this.setState(
{myData: response}
)
},
loadData: function(URL) {
$.ajax({
type: 'GET',
dataType: 'jsonp',
url: URL,
success: function(response){
this.showResults(response)
}.bind(this)
})
},
render: function(){
this.loadData("fileLocation/sample.json");
return(
<div>
{myData.key1}
<Component1 value={myData.key2} />
<Component2 value={myData.array[0].key3}/>
</div>
)
}
});
var Component1 = React.createClass({
render: function() {
return(
<div>{this.props.value}</div>
)
}
});
var Component2 = React.createClass({
render: function() {
return(
<div>{this.props.value}</div>
)
}
});
ReactDOM.render(<App/>, document.getElementById('content'));
Das ist sample.json-Datei, die ich abholen möchte. Auch zeigt dies einen Syntaxfehler
{
key1:"value1",
key2:"value2",
array: [
{key3:"value3"},
{key4:"value4"}
]
}
Sollte nicht 'myData.' sein' this.state.myData.'? – Kujira
Rufen Sie 'this.loadData()' auch in 'componentDidMount' oder' componentWillMount' auf. Sonst wird es aufgrund von Zustandsänderungen unendlich oft aufgerufen. – Kujira
Zusätzlich zu den @Kujira-Tipps bezieht sich das '.bind (this)' auf das xhr-Objekt. Weisen Sie 'this' außerhalb des '$ .ajax' am Anfang der' loadData' -Funktion einen Alias zu und verwenden Sie dann den Alias beim erfolgreichen Callback, um auf das tatsächliche, das Sie wollen, zu verweisen. – falsarella