[英]How to store value from callback function in react state? (Google Maps)
我试图将回调函数中的值存储在 React 的状态中,但一直有错误。
我正在使用 @react-google-maps/api 并希望将 geoJson 存储在 state 中,因此在我的代码中,我试图访问 '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
});
};
您需要在回调中设置value
。 在这里,箭头函数很重要,因为您可以在不绑定的情况下保留上下文。
getGeoJson = (map, maps) => {
map.data.toGeoJson((obj) => {
this.setState({
value: obj
});
});
};
变量 obj 是函数作用域,您试图在回调函数之外设置它的值,这就是该值可能被设置为 undefined 或 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
});
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.