玄学 state -setState真的是异步的吗

33 阅读1分钟

本章节主要还是围绕 legacy 模式下的 state [ ①state , ②dispatch ] = useState(③initData) 里面的初始值,分为函数或者纯数值

dispatch 本身也可以被分为 函数和非函数

const [ number , setNumber ] = React.useState(0)
/* 一个点击事件 */
const handleClick=()=>{
   setNumber(1)
   setNumber(2)
   setNumber(3)
}

const [ number , setNumber ] = React.useState(0)
const handleClick=()=>{
   setNumber((state)=> state + 1)  // state - > 0 + 1 = 1
   setNumber(8)  // state - > 8
   setNumber((state)=> state + 1)  // state - > 8 + 1 = 9
}

如何监听 state 变化?

  1. 函数组件通过useEffect 依赖项来解决

dispatch更新特点

  1. 通过函数式setState 方式变更的组件,设置完后,你是获取不到最新值的,初始开发的时候经常遇到,我设置完值后,想要最新,经常都是旧值,原因是什么,那是因为函数组件能更新是因为组件内部对应函数执行了,当前函数上下文下,函数调用,内部变量被初始化,只有你再次调用,初始值才是被更新过的,原来是这样啊,函数组件里面想解决这个问题,唯一解就是再去通过useEffect 来进行监听,要么就用ref 来控制。