は私がcomponentWillMount()の段階でそれを呼び出すと、この構造を移入しようと、この機能にオブジェクトが定義されていないのはなぜですか?私はいくつかの場所を取得しようとしています
getLocation(){
$.ajax({
url:"//freegeoip.net/json/?callback=?",
dataType:'json',
success:function (data) {
this.setState({
coordinates:data
},function() {
console.log(this.state);
})
}.bind(this),
error:function (xhr,status,err) {
console.log(err);
}
})
}
を調整します。
しかしthis.state = {
restaurantsByLocations:{},
coordinates:{}
}
、私はそれが渡されません
getRestaurantsByLocation(lat,longi){
/**Some code here **/
}
に渡してみてください。 Console.log()を実行すると、オブジェクトが設定されます。しかし、console.log(JSON.stringify(this.state.coordinates))を実行すると、オブジェクトが実際に空であることが示されます。
は、これは私のcomponentWillMount()である
componentWillMount(){
this.getLocation();
this.getRestaurantsByLocation(this.state.coordinates.latitude,this.state.coordinates.longitude)
}
これは非同期呼び出しであるため、時間がかかります。console.logを実行すると、参照が保持されるので、参照が変更されたときに参照されます。あなたがストリングをするとき、あなたはこの時点で値を保持し、あなたの状態はまだ設定されていません。編集:状態を更新すると、あなたのビューが更新されるように、常にComponentDidMountで非同期呼び出しを行う必要があります:https://facebook.github.io/react/docs/react-component.html#componentdidmount – Nevosis
また、あなたのデバッグ 'その結果を含めて、console.logの質問に? –
皆様、ありがとうございます。問題は確かに非同期呼び出しだったので、私はもっと自分自身を教育することを確かめます。再度、感謝します! – LoXatoR