请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于useEffect内部不能修改state的坑的问题

双越老师,
您好!
关于关于useEffect内部不能修改state的问题,您给的那个例子种,由于useEffect在re-render的时候不会再调用,所以在useEffect的这个作用域里count始终是初始值.
但是count是一个自由变量,他在useEffect之外定义的,所以setInterval执行的时候,会去找最外层的那个count,那不是一直在变的吗?

谢谢.

正在回答 回答被采纳积分+3

1回答

双越 2021-05-01 16:18:47

你可能忽略了一点:函数组件,每次组件更新时,函数都是重新执行一遍的,即函数中所有的变量都会重新定义的。

1 回复 有任何疑惑可以回复我~
  • 老师,虽然组件更新,变量会重新定义,但是useState定义的变量,是会取到最新值的,那定时器里的count不应该也能取到最新值么? 这有点理解不了。。
    回复 有任何疑惑可以回复我~ 2021-07-03 17:19:07
  • 看了下react文档,好像是useEffect第二个参数为空数组的时候,组件更新时“会引用到先前渲染中的旧变量”,具体实现猜测是useEffect保存了内部引用的参数。。  没法贴图,https://zh-hans.reactjs.org/docs/hooks-effect.html
    回复 有任何疑惑可以回复我~ 2021-07-03 17:38:39
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信