state hook
const [count, setCount] = useState<number>(10)
// 必须用setCount更新count,但是setCount是一个异步函数,在频繁地操作时会有一些问题
<button onClick={
() => {
for (let i=1; i<=10; i++) {
setCount(count + i)
}
}
}>
它会合并执行,只执行最后一次,结果是19,这样问题还不大,但是这样
<button onClick={
() => {
for (let i=1; i<=10; i++) {
setCount(count + 1)
}
}
}>
它也只执行最后一次,这样就会导致结果是11,与预期不符
这种频繁地操作,需要这样写:(当setCount中传入的是函数的时候,它会自动传入count作为参数,并执行该函数),相当于是 (c) => c + 1;传入count,返回的就是count+1,setCount(count + 1)
<button onClick={
() => {
for (let i=1; i<=10; i++) {
setCount((c) => c + 1) // 这个形参代表的是count,因为setCount会把count做参数传参给该函数,形成闭包
}
}
}>
标签:count,函数,hooks,setCount,let,执行
From: https://www.cnblogs.com/Lilc20201212/p/16767591.html