我在React中遇到Google Map问题。 一切都很好但是,当我尝试在这张地图中重新渲染其他地方时它不起作用:( 我的意思是当我改变城市(例如选择)时使用新的道具(纬度,经度),但是城市一个地图不会改变
import React from 'react';
import ReactDOM from 'react-dom';
import { withGoogleMap, GoogleMap, Marker } from "react-google-maps";
const SimpleMapExampleGoogleMap = withGoogleMap( props => {
console.log("here new props are used", props)
return <GoogleMap
defaultZoom={15}
defaultCenter={new google.maps.LatLng(props.lat, props.lng)}
/>
}
);
class GMap extends React.Component{
constructor(props) {
super(props);
this.state = {
lat: this.props.lat,
lng: this.props.lng
}
}
render() {
console.log("New props ", this.props)
return <SimpleMapExampleGoogleMap
lat={this.props.lat}
lng={this.props.lng}
containerElement={
<div style={{ height: `500px` }} />
}
mapElement={
<div style={{ height: `500px` }} />
}
/>
}
}
export { GMap }
答案 0 :(得分:6)
您已为lng
和lat
设置了状态,但您没有在地图上应用它们
=&GT;将this.props.lat
更改为this.state.lat
,将lng
更改为
return <SimpleMapExampleGoogleMap
lat={this.state.lat}
lng={this.state.lng}
containerElement={
<div style={{ height: `500px` }} />
}
mapElement={
<div style={{ height: `500px` }} />
}
/>
如果上述代码尚未更新您的地图,请随意添加以下方法(与构造函数相同的级别):
constructors(props){/*...*/}
componentWillReceiveProps(nextProps) {
this.setState({
lat: nextProps.lat,
lng: nextProps.lng,
});
}
render(){/*...*/}
如果您有错误,也请在此发帖,谢谢