【发布时间】:2021-06-20 02:10:30
【问题描述】:
我正在使用@react-google-maps/api,我正在尝试在 gmap 功能上设置点击事件,将其区域附加到 React 状态。
但每次我单击该功能时,似乎状态已设置为空数组(初始状态)。并且事件将一个字符串附加到它。所以状态不会变长。
在这个组件中,我放置了一个按钮来触发相同的点击事件并且工作正常。我不知道为什么会这样。
const MapComponent = ({area, setArea}) => {
const { isLoaded, loadError } = useLoadScript({
googleMapsApiKey: "APIKEY"
})
const onClickFeature = e => {
let tgt = e.feature.getProperty("S_NAME")
if(tgt){
addArea(tgt)
}
}
const addArea = tgt => {
let copy = [...area]
copy.push(tgt)
setArea(copy)
}
const renderMap = () => {
const onLoad = async map => {
await getGeoJson().then(res => {
initPolygon(map,res) //draw polygons with feature collection
map.data.addListener("click", e => {
onClickFeature(e)
})
})
}
return <><GoogleMap
mapContainerStyle={containerStyle}
center={center}
zoom={14}
onLoad={onLoad}
onClick={onClickFeature}
>
</GoogleMap>
<button onClick={() => addArea('someplace')}>CLICK</button> {/* This works fine */}
<div>Selected: {area} </div>
</>}
if (loadError) {
return <div>Map cannot be loaded right now, sorry.</div>
}
return isLoaded ? renderMap() : null
}
【问题讨论】:
-
您能提供到目前为止您的代码的 [sscce](sscce.org) 吗?您可以使用stackblitz 来执行此操作。
标签: reactjs google-maps-api-3 react-hooks