关于 React Hook 不能访问state最新值的解决方法
- setState后 state不是立即更新的,react 的设计是在某个时候将多个 setState 合并更新,这就会出现视图更新但打印出来的 state 还没更新的情况
- 因为上面的原因所以在组件的方法中是不能直接访问 state 去获取它的最新值。而 useEffect 中或在 setState中使用箭头函数 可以访问到 state 的最新值,所以主要有三种方法
- 第一种是使用 useRef,他能将state的最新值从 useEffect 中暴露出来
- 第二种是更新 state 时需要依赖 state 的最新值,在 setState 中使用箭头函数,在箭头函数中能获取当前最新值,你可以对这个最新值进行一些操作。
- 第三种是自定义 hook,能够减少代码量。
附上另一篇写得很好的文章
计时器组件的实现
计时器组件的代码
import React from "react";
const Clock = () => {
const minsRef = React.useRef();
const secsRef = React.useRef();
const [num_hours, setNumHours] = React.useState</