学习 react hooks 的时候遇到了一点疑惑, 如下:
setState 貌似是可以有两种写法, 似乎产生了不同的效果
const Counter = props => {
const [count, setCount] = useState(0)
const addTwice1 = () => {
setCount(prevCount => prevCount+1)
setCount(prevCount => prevCount+1)
}
const addTwice2 = () => {
setCount(count+1)
setCount(count+1)
}
return (
// ....
)
}
上面的代码中, 如果执行第一个addTwice1
, 似乎 count 是可以一次性加 2 的, 但是如果调用 addTwice2, 似乎每次还是只能加 1. 想请教一下对于第二种, 是不是和 class 组件里的setState
类似, 状态是无法合并更新的, 而第一种类似setState
里传入了一个回调函数, 可以合并更新? 请问这两种写法的区别在哪, 以及是否有相关文章可以参考? 感谢
第二个count + 1由于闭包的关系, 实际上第二次执行的count + 1里的count依然是1 , 也就是执行了两次 setCount(2)