react - useState 从不更新值

时间:2021-07-26 12:47:02

标签: reactjs

我有这个功能组件:

1.

由于某些原因,export default function Proximity (props){ // const [center, setCenter] = useState([3.1397, 101.6852]); const [lat, setLat] = useState(3.333); const [lng, setLng] = useState(2.222); useEffect(()=>{ getLocation() },[]) function getLocation(){ navigator.geolocation.getCurrentPosition(function(pos) { console.log(pos.coords.latitude) // <-- 4.444 console.log(pos.coords.longitude)// <-- 5.555 setLat(pos.coords.latitude) ///<-- update lat value setLng(pos.coords.longitude) ///<-- update lng value console.log(lat) //<-- 3.333 console.log(lng) //<-- 2.222 }); } } ... } setLat 永远不会更新值。 setLng 只是示例之一。我有其他函数也使用 getLocationsetLat,当我得到 setLnglat 时,我总是得到 3.333 和 2.222。

似乎是什么问题?我该如何解决?

1 个答案:

答案 0 :(得分:3)

setLatsetLng 是异步的,您不能在设置后立即记录更新的值。在这种情况下,您应该使用 useEffect 钩子记录最新值。类似的东西:

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

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