我有这个功能组件:
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
只是示例之一。我有其他函数也使用 getLocation
和 setLat
,当我得到 setLng
和 lat
时,我总是得到 3.333 和 2.222。
似乎是什么问题?我该如何解决?
答案 0 :(得分:3)
setLat
和 setLng
是异步的,您不能在设置后立即记录更新的值。在这种情况下,您应该使用 useEffect
钩子记录最新值。类似的东西:
useEffect(() => {
console.log(lat);
}, [lat]);
useEffect(() => {
console.log(lng);
}, [lng]);