Reactjs 如何使用Axios从响应中提升状态?

Reactjs 如何使用Axios从响应中提升状态?,reactjs,google-maps,axios,Reactjs,Google Maps,Axios,我有一个带有state的父App.js组件和一个带有state的子MapContainer.js组件。子组件显示google地图,我使用以下函数将状态从子组件提升到父组件: mapClicked = (event) => { const { markers } = this.state; let url = 'https://maps.googleapis.com/maps/api/geocode/json?latlng='+ event.latLng.lat() +

我有一个带有state的父App.js组件和一个带有state的子MapContainer.js组件。子组件显示google地图,我使用以下函数将状态从子组件提升到父组件:

mapClicked = (event) => {
     const { markers } = this.state;
     let url = 'https://maps.googleapis.com/maps/api/geocode/json?latlng='+ event.latLng.lat() + ',' + event.latLng.lng()+ '&key='+ 'MYGOOGLEAPIKEY' +'';
     axios.get(url).then(response => this.setState({
       googleReverseGeolocation:response.data.results,
       markers:[{  position:{lat:event.latLng.lat(),lng:event.latLng.lng()}  }, ...markers],
       latClick:event.latLng.lat(),
       lngClick:event.latLng.lng()
     }))   
     this.props.onResultChange(event.latLng.lat(),event.latLng.lng(), **NEED A VALID 3RD ARGUMENT**)    
   }
与父组件相关的函数如下所示:

 onResultChange(x,y,info){
    this.setState(
      {
        lat:x,
        lng:y,
        clickedInfoObject:info
      }
    )
  }
onResultChange中的lat:x和lat:y从传递到函数(即event.latLng.lat和event.latLng.lng)的值的子组件中正确更新。但是,我无法使用axios请求的response.data.results,因为该值仅在axios请求的范围内有效。 如何为onResultChangeevent.latLng.lat、event.latLng.lng、**函数插入第三个参数**需要一个有效的第三个参数**来提升所有三个参数的状态?

如果可以在请求返回时调用onResultChange,那么这应该可以:

mapClicked = event => {
  const lat = event.latLng.lat();
  const lng = event.latLng.lng();
  let url = `https://maps.googleapis.com/maps/api/geocode/json?latlng=${lat},${lng}&key=MYGOOGLEAPIKEY`;
  axios.get(url).then(response => {
    const { markers } = this.state;
    this.setState({
      googleReverseGeolocation: response.data.results,
      markers: [{ position: { lat, lng } }, ...markers],
      latClick: lat,
      lngClick: lng
    });
    this.props.onResultChange(lat, lng, response);
  });
};

不会的。它抛出一个类似这样的错误,因为响应在调用外部是未定义的。在调用外部是什么意思?在哪里?哦,对不起,没有看到括号,你说得对极了!断然的