Javascript 如何在react状态下存储回调函数中的值?(谷歌地图)

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 });

我试图将回调函数中的值存储在React的状态中,但始终存在错误

我正在使用@react google maps/api,希望将geoJson存储在状态中,因此在我的代码中,我试图访问“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);但这会返回函数,因为它的self
obj
是回调函数中的一个参数,它在外部无法访问,这可能是错误的原因。