React代码如下, 前三次每次点击button都会打印不同的结果,苦思不得解,请大佬解惑。。
第一次点击button打印:click 1 2
第二次点击button打印:click 1
第三 ~ 第 N 次点击button打印:click
function A() {
console.log(2)
return null
}
const App: React.FC = () => {
const [flag, setFlag] = useState(false)
console.log(1)
return (
<div>
<button
onClick={() => {
console.log("click")
setFlag(true)
}}
>
click me
</button>
<A />
</div>
)
}
如何解释第二次的打印结果呢???
我原以为第二次点击button,只会打印click,依据是状态的newValue === prevValue,不会触发re-render,但是想不通为什么还打印了“1”。然后奇怪的是,第三次往后,又没有“1”了
这个涉及react的更新策略问题,建议网上搜索eagerState相关内容,或者看下这篇https://juejin.cn/post/7073692220313829407