useState设置某个值x成功以后,在useEffect里也是打印的最新的x值,但是几秒后在一个函数(点击外部按钮执行的)里打印这个x却是初始值。为什么会出现这个情况?
useState设置某个值x成功以后,在useEffect里也是打印的最新的x值,但是几秒后在一个函数(点击外部按钮执行的)里打印这个x却是初始值。为什么会出现这个情况?
4 回答1.7k 阅读
2 回答1.1k 阅读✓ 已解决
2 回答2.6k 阅读
1 回答998 阅读✓ 已解决
1 回答711 阅读✓ 已解决
2 回答872 阅读✓ 已解决
4 回答1.2k 阅读
要理解原因很简单,因为每次setState之后都会导致函数组件重新执行,而如果你在外部引用调用的函数,是前几轮更新时创建的,所以他引用的state可能还在时前几轮更新时值
我写了一个80行的简易代码方便让你知道setState之后发生了什么,和为什么state没有更新
如果你不想知道原理可以直接看这里的解决办法
如果你还想知道更多的细节可以查看我的项目tiny-react
他会教你怎么用几千行代码实现React17核心功能的以及React18才开放的ConcurrentMode