代码:
class Locations extends React.Component {
render() {
let { home, work, onChange } = this.props;
return <div className="controls">
<GoogleMapLoader
containerElement={
<div
{...this.props}
style={{
height: '100%'
}} >
</div>
}
googleMapElement={
<GoogleMap
ref="map"
defaultZoom={15}
center={{
lat: 47.6205588,
lng: -122.3212725,
}}
>
<SearchBox
ref="searchBoxHome"
placeholder="Home"
controlPosition={google.maps.ControlPosition.TOP_LEFT}
onPlacesChanged={onChange(this.refs.searchBoxHome.getPlaces(), 'home')}
/>
...
错误:
TypeError:this.refs.searchBoxHome未定义
我不确定如何将元素上的方法正确绑定到我传入的onChange函数。
动作:
export const changeAddress = (places, place) => {
return {
type: 'CHANGE_ADDRESS',
places,
place
}
};
答案 0 :(得分:3)
event
默认传递给函数,您可以通过event.target
访问该元素。
onChange(element, home) {
...
}
和
<SearchBox
ref="searchBoxHome"
placeholder="Home"
controlPosition={google.maps.ControlPosition.TOP_LEFT}
onPlacesChanged={event => onChange(event.target, 'home')}
/>
答案 1 :(得分:1)
您可以尝试使用arrow function
,就像这样
<SearchBox
ref="searchBoxHome"
placeholder="Home"
controlPosition={ google.maps.ControlPosition.TOP_LEFT }
onPlacesChanged={
() => onChange(this.refs.searchBoxHome.getPlaces(), 'home')
}
/>