Javascript 如何在react状态下存储回调函数中的值?(谷歌地图)
我试图将回调函数中的值存储在React的状态中,但始终存在错误 我正在使用@react google maps/api,希望将geoJson存储在状态中,因此在我的代码中,我试图访问“obj”,并使其在回调之外可用 这是我的密码Javascript 如何在react状态下存储回调函数中的值?(谷歌地图),javascript,reactjs,google-maps,state,Javascript,Reactjs,Google Maps,State,我试图将回调函数中的值存储在React的状态中,但始终存在错误 我正在使用@react google maps/api,希望将geoJson存储在状态中,因此在我的代码中,我试图访问“obj”,并使其在回调之外可用 这是我的密码 getGeoJson = (map, maps) => { //toGeoJson() takes a callback map.data.toGeoJson(function(obj){ return obj });
getGeoJson = (map, maps) => {
//toGeoJson() takes a callback
map.data.toGeoJson(function(obj){
return obj
});
//Trying to store in state like this...
this.setState({
value: obj
});
};
参考资料
您需要在回调中设置
值。在这里,arrow函数很重要,因为您可以在不绑定的情况下保留上下文
getGeoJson = (map, maps) => {
map.data.toGeoJson((obj) => {
this.setState({
value: obj
});
});
};
变量obj是函数作用域,您试图在回调函数之外设置它的值,这就是该值可能被设置为未定义或null或这些行中的某个值的原因
您需要将obj变量存储到回调函数内的state中。像这样:
getGeoJson = (map, maps) => {
//toGeoJson() takes a callback
map.data.toGeoJson(obj => {
return obj
this.setState({
value: obj
});
});
};
但是,出于某种原因,如果不想在回调函数中设置它的值,可以从回调函数返回obj的值,但还需要将返回的值捕获到另一个变量中,然后才能将其存储在状态中,如下所示:
getGeoJson = (map, maps) => {
//toGeoJson() takes a callback
const object = map.data.toGeoJson(function(obj){
return obj
});
this.setState({
value: object
});
};
试让a=函数(obj){返回obj;};map.data.toGeoJson(a);控制台日志(a);但这会返回函数,因为它的selfobj
是回调函数中的一个参数,它在外部无法访问,这可能是错误的原因。