React Hooks useState异步问题

420

React class组件的setState方法是异步的,其提供回调函数解决其异步的问题。

函数组件hooks的useState也是异步的,要在下次重绘才能获取新值。

即:不要试图在更改状态之后立马获取状态。

解决方案:可以使用useRef 存储这个数据,在useEffect里监听data的变化。

import {useRef} from 'react';
const dataRef = useRef();
const [data,setData] = useState[{}]
useEffect(() => {
     dataRef.current =   data
}, [data])

想使用当前的数据的时候直接用:

console.log(dataRef.current)//最新的数据