【发布时间】:2020-11-26 21:04:13
【问题描述】:
我有一个问题,我想在渲染之前将navigator.geolocation 的纬度和经度存储在useEffect 中,使用一个空数组,但是当我console.log 我的结果时它显示null。
这里是相关部分。
import React, {useState, useEffect} from 'react';
const [userPos, setUserPos] = useState({lat: null, long: null})
useEffect(() => {
navigator.geolocation.getcurrentposition((pos) =>{
console.log(pos.coords.latitude + " " + pos.coords.longitude) // display VALUE
setUserPos({
lat: pos.coords.latitude,
long: pos.coords.longitude,
}) // store data in usestate
console.log(userPos) // Display Null
}, (err) => {
console.log(err);
},options);
}
})
}, [])
那么为什么,当我在useEffect 中记录pos.coords 时,我有值,但在我记录状态时却没有。有什么想法吗?
【问题讨论】:
-
因为 react 不会在中途重新渲染你的钩子。当函数完成后状态发生变化时,它会重新渲染。
-
@Dominik 以及如何在第一次渲染中存储数据
-
我为你添加了答案
标签: reactjs geolocation react-hooks use-effect use-state