React - Google地图组件在重新渲染后不会更改地图

时间:2017-05-23 07:24:54

标签: javascript reactjs google-maps-api-3

我在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 }

1 个答案:

答案 0 :(得分:6)

您已为lnglat设置了状态,但您没有在地图上应用它们

=&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(){/*...*/}

如果您有错误,也请在此发帖,谢谢