React Hooks useState异步问题
最近在开发中遇到一个问题 我接口请求回来的数据 用useState存储起来。
但是我后面 去改变这个数据的时候每次拿到都是上次的数据没办法及时更新。
- 原因:
- useState 返回的更新状态方法是异步的,要在下次重绘才能获取新值。不要试图在更改状态之后立马获取状态。
- 解决方法:
- 应该使用useRef 存储这个数据,在useEffect里监听data的变化
const dataRef = useRef()
const [data,setData] = useState[{}]
useEffect(() => {
dataRef.current = data
}, [data])
- 当我们想使用当前的数据的时候直接用dataRef.current 获取的就是当前最新的数据
console.log(dataRef.current)//最新的数据