我无法在处理函数中设置状态
I can't set the state in my handler function
我正在尝试为我的状态设置一个常量,但它似乎在几天前有效时不起作用。
我在这样的函数中调用 setter:
const [activeMarker, setActiveMarker] = useState(null);
const handleActiveMarker = (marker) => {
if (marker === activeMarker) {
return;
}
setActiveMarker(marker);
console.log(marker, '--', activeMarker)
};
那叫在
{markers.map(({ id, latitud, longitud}) => (
<Marker
key={id}
position={{lat: latitud, lng: longitud}}
onClick={() => handleActiveMarker(id) }
/>
))}
属性标记是一个标记数组,它在我的地图中打印得很好,但是当我单击时,在我的处理程序的 console.log 中,我得到标记的 id,在 activeMarker 中得到 null 必须出现相同的数字。
记住 useState 是异步的,所以它不会立即更新。要获取 console.log 值以记录您的值,您应该添加一个 useEffect。
useEffect(() => {
console.log(activeMarker)
},[activeMarker])
我正在尝试为我的状态设置一个常量,但它似乎在几天前有效时不起作用。
我在这样的函数中调用 setter:
const [activeMarker, setActiveMarker] = useState(null);
const handleActiveMarker = (marker) => {
if (marker === activeMarker) {
return;
}
setActiveMarker(marker);
console.log(marker, '--', activeMarker)
};
那叫在
{markers.map(({ id, latitud, longitud}) => (
<Marker
key={id}
position={{lat: latitud, lng: longitud}}
onClick={() => handleActiveMarker(id) }
/>
))}
属性标记是一个标记数组,它在我的地图中打印得很好,但是当我单击时,在我的处理程序的 console.log 中,我得到标记的 id,在 activeMarker 中得到 null 必须出现相同的数字。
记住 useState 是异步的,所以它不会立即更新。要获取 console.log 值以记录您的值,您应该添加一个 useEffect。
useEffect(() => {
console.log(activeMarker)
},[activeMarker])