本章节主要还是围绕 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 变化?
- 函数组件通过useEffect 依赖项来解决
dispatch
更新特点
- 通过函数式setState 方式变更的组件,设置完后,你是获取不到最新值的,初始开发的时候经常遇到,我设置完值后,想要最新,经常都是旧值,原因是什么,那是因为函数组件能更新是因为组件内部对应函数执行了,当前函数上下文下,函数调用,内部变量被初始化,只有你再次调用,初始值才是被更新过的,原来是这样啊,函数组件里面想解决这个问题,唯一解就是再去通过useEffect 来进行监听,要么就用ref 来控制。