未捕获的类型错误:无法读取与 Google 地图反应中的 null 属性“props”
2016-12-23
1675
我正在使用 google-maps-react 和 react 在地图上显示一些数据,现在我想要在单击或悬停标记时显示工具提示。为此,我认为我可以使用 google-maps-react 附带的“InfoWindown”组件,但它给了我一个错误“无法读取 null 的属性‘props’”。
这是我的代码..
import React, { Component } from 'react';
import Map, { Marker, InfoWindow } from 'google-maps-react';
export default class GoogleMap extends Component {
constructor(props) {
super(props);
this.state = {
showingInfoWindow: false,
activeMarker: {},
selectedPlace: {}
};
this.renderTrucks = this.renderTrucks.bind(this);
this.onMarkerClick = this.onMarkerClick.bind(this);
}
onMarkerClick(props, marker, e) {
this.setState({
selectedPlace: props,
activeMarker: marker
});
}
renderTrucks() {
if (this.props.list.length === 0) {
return;
}
return this.props.list.map((truckInfo) => {
return (<Marker
key={truckInfo.objectid}
name={truckInfo.applicant}
onClick={this.onMarkerClick}
position={{lat:truckInfo.latitude, lng:truckInfo.longitude}} />
);
});
}
render() {
return (
<Map google={window.google}
className={'map'}
style={{width: '50%', height: '80%', position: 'relative'}}
zoom={13}>
{this.renderTrucks()}
<InfoWindow
marker={this.state.activeMarker}
visible={this.state.showingInfoWindow}>
<p>{this.state.selectedPlace.name}</p>
</InfoWindow>
</Map>
);
}
}
我认为我的所有回调函数都很好,但在我看来,“InfoWindow”组件是给我带来麻烦的那个。有人知道如何使用这个东西吗?
谢谢,
1个回答
我假设问题出在
onClick={this.onMarkerClick
。回调中的
this
与外部不同。
使用以下代码设置标记的 onClick 属性时是否有效?
onClick={(props, marker, e) => this.onMarkerClick(props, marker, e)}
有关箭头函数的更多信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
An arrow function does not create its own this context, so this has the original meaning from the enclosing context.
nightlyop
2016-12-23