Ich brauche die Zeichenfolge „this.state.localita“ var „loc“ zu übergeben, um Daten von JSON zu holen.Reagieren Native - Vergeben this.state.var eine Variablen
Wenn ich drucken this.state.localita i die Zeichenfolge lesen kann, aber wenn ich zuweisen, dass es sagt JSON Unhandle Versprechen an die var loc.
componentDidMount() {
AsyncStorage.getItem("localita").then((value) => {
this.setState({"localita": value});
}).done();
this._refreshData();
}
_refreshData() {
var loc = this.state.localita; // Here is the problem
fetch('https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D%22' +
loc +'%2C%20Italy%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys')
.then((response) => response.json())
.then((rjson) => {
this.setState({
dataSource: this.state.dataSource.cloneWithRows(rjson.query.results.channel.item.forecast)
});
});
}
}
Haben Sie 'this' an' _refreshData() 'in Ihrem' Konstruktor' gebunden? – peterp
Konstruktor (Stützen) { Super (Requisiten); var ds = neue ListView.DataSource ({rowHasChanged: (r1, r2) => r1! == r2}); this.state = { Datenquelle: ds.cloneWithRows ([]) }; } – Fabiospecial
Sie sollten 'this._refreshData = this._refreshData.bind (this);' weil ES6-Klassen nicht autobind. – peterp