-2

我正在使用该google-map-react组件,并且正在尝试设置用户单击的位置的坐标。我有坐标,但是当我第一次点击地图(点击事件被触发)时,数组coordinates返回一个空数组。

这会导致奇怪的行为,每次点击都会返回上一次点击的坐标?谁能看到这里发生了什么?

const Map = ({ center, zoom}) => {

    const [ coordinates, setCoordinates ] = useState([]);

    const onMapClick = ({ lat, lng }) => {
        setCoordinates([lat, lng]);
        console.log(coordinates)
    };

    return (
        <div className="map">
            <GoogleMapReact 
                bootstrapURLKeys={{ key: 'redacted' }}
                defaultCenter={center}
                defaultZoom={zoom}
                onClick={onMapClick}
            />
        </div>
    );
};

Map.defaultProps = {
    center: {
        lat: 53.3439,
        lng: 33.0622
    },
    zoom: 5
}

该行为正在记录以下内容

[]
(2) [51.13790387040561, -11.71807343750003]
(2) [47.709656855536565, 2.1686453124999705]

第二个日志应该在位置 1,第三个日志应该在位置 2。

4

1 回答 1

1

useState 上有一个异步行为。您的 console.log() 将显示旧的。因为状态还没有更新。但是如果你把你的 console.log() 放在 useEffect 中

useEffect(() => {
 console.log(coordinates)
}, [coordinates])

您将看到它在 onClick 事件之后正确显示。

您的代码工作正常。你可以把你的坐标状态放在你想使用它们的地方。

于 2020-12-05T17:10:04.323 回答