Reactjs 如何使用Axios从响应中提升状态?
我有一个带有state的父App.js组件和一个带有state的子MapContainer.js组件。子组件显示google地图,我使用以下函数将状态从子组件提升到父组件: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() +
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);
});
};
不会的。它抛出一个类似这样的错误,因为响应在调用外部是未定义的。在调用外部是什么意思?在哪里?哦,对不起,没有看到括号,你说得对极了!断然的