Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 从回调函数返回的值_Reactjs_Callback_Frontend_Google Distancematrix Api_Distance Matrix - Fatal编程技术网

Reactjs 从回调函数返回的值

Reactjs 从回调函数返回的值,reactjs,callback,frontend,google-distancematrix-api,distance-matrix,Reactjs,Callback,Frontend,Google Distancematrix Api,Distance Matrix,我在通过回调函数获取返回值时遇到了一些问题(“dist”=未定义)。不过,我可以从控制台得到它…请有人能帮忙 CalculateInstance=(地点,我)=>{ var origin=new window.google.maps.LatLng( parseFloat(地点、纬度) parseFloat(地点、经度) ); var destination=new window.google.maps.LatLng( parseFloat(我的纬度), parseFloat(我的经度) ); v

我在通过回调函数获取返回值时遇到了一些问题(“dist”=未定义)。不过,我可以从控制台得到它…请有人能帮忙

CalculateInstance=(地点,我)=>{
var origin=new window.google.maps.LatLng(
parseFloat(地点、纬度)
parseFloat(地点、经度)
);
var destination=new window.google.maps.LatLng(
parseFloat(我的纬度),
parseFloat(我的经度)
);
var service=new window.google.maps.DistanceMatrixService();
service.getDistanceMatrix(
{
来源:[来源],
目的地:[目的地],
travelMode:window.google.maps.travelMode.DRIVING,
避免:错误,
避免:错误,
unitSystem:window.google.maps.unitSystem.metric
},
功能(响应、状态){
如果(
状态==“正常”&&
响应。行[0]。元素[0]。状态!=“零结果”
) {
让dist=parseFloat(response.rows[0]。elements[0]。distance.text);
返回距离;
}否则{
警报(“错误:+status.toString());
}
}
);
};

您不能强制Google函数返回您的回调值,因此您最好从回调函数内部调用另一个函数

const setDist = (dist) => {
   //persist your dist somehow, maybe setState?
   this.setState({distance: dist});
}

service.getDistanceMatrix(
      {
        origins: [origin],
        destinations: [destination],
        travelMode: window.google.maps.TravelMode.DRIVING,
        avoidHighways: false,
        avoidTolls: false,
        unitSystem: window.google.maps.UnitSystem.metric
      },
      function(response, status) {
        if (
          status === "OK" &&
          response.rows[0].elements[0].status !== "ZERO_RESULTS"
        ) {
          let dist = parseFloat(response.rows[0].elements[0].distance.text);
          setDist(dist);
        } else {
          alert("Error: " + status.toString());
        }
      }
    );

你不能强迫Google的函数返回你的回调值,所以你能做的最好的事情就是从你的回调函数中调用另一个函数

const setDist = (dist) => {
   //persist your dist somehow, maybe setState?
   this.setState({distance: dist});
}

service.getDistanceMatrix(
      {
        origins: [origin],
        destinations: [destination],
        travelMode: window.google.maps.TravelMode.DRIVING,
        avoidHighways: false,
        avoidTolls: false,
        unitSystem: window.google.maps.UnitSystem.metric
      },
      function(response, status) {
        if (
          status === "OK" &&
          response.rows[0].elements[0].status !== "ZERO_RESULTS"
        ) {
          let dist = parseFloat(response.rows[0].elements[0].distance.text);
          setDist(dist);
        } else {
          alert("Error: " + status.toString());
        }
      }
    );

你试过用控制台记录整个对象吗?例如,在这一行之后添加
console.log('response:',response)..:
let dist=parseFloat(response.rows[0].elements[0].distance.text);`然后,您可以在控制台中展开响应对象,以确保该值存在于该对象中。您是否尝试在控制台中记录整个对象?例如,在这一行之后添加
console.log('response:',response)..:
let dist=parseFloat(response.rows[0].elements[0].distance.text);`然后,您可以在控制台中展开响应对象,以确保该值存在于该对象中。嘿,伙计!!这不起作用…当我控制台记录this.state.distance时,我无法在回调函数中调用setDist函数==>它未定义。您可以控制台记录函数本身吗?在
setDist(dist)
console\u log(setDist)
之后。我很好奇它是否有定义。另外,此
calculatedInstance
位于何处?它在类组件中吗?还是你要进口?你好!!我在类组件中调用CalculateInstance,虽然我想返回setDist(dist)的值,但我不想向控制台显示函数值,因为我已经完成了。谢谢你,布莱恩,伙计!!这不起作用…当我控制台记录this.state.distance时,我无法在回调函数中调用setDist函数==>它未定义。您可以控制台记录函数本身吗?在
setDist(dist)
console\u log(setDist)
之后。我很好奇它是否有定义。另外,此
calculatedInstance
位于何处?它在类组件中吗?还是你要进口?你好!!我在类组件中调用CalculateInstance,虽然我想返回setDist(dist)的值,但我不想向控制台显示函数值,因为我已经完成了。谢谢,我是布莱恩