请稍等 ...
×

采纳答案成功!

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

有三个问题需要请教下

图片描述图片描述老师,有三个问题需要请教下,

  1. 图一:为什么写成++这种形式,会报ready only?
  2. 图二:为什么写成【count】依然可以实现功能,并没有闭包问题?
  3. setCount本身是一个闭包函数吗?

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

2回答

FE大公爵 2023-02-28 10:25:09

追加回答一下,正常开发中,useEffect中用到的值确实是应该添加在依赖之中,课程中这一节主要是想借此引出setState的另外一种用法,所以故意没添加,暴露出闭包的问题。

0 回复 有任何疑惑可以回复我~
FE大公爵 2023-02-28 10:22:25

首先恭喜你学的真快。

回答第一个问题:不管是 count++ 还是 ++count,都会对count值做赋值操作,这个是不允许的,因为React中state是不允许直接赋值的,要通过setState修改,对应到函数式的useState写法也是一样。你即便不写count++,写count = count + 1;也是一样的,会报read only错误。


回答第二个问题:你的useEffect中添加了count依赖,这会穿透闭包,读取到的就是最新的state值,所以就正确了。如果不添加依赖,或者你的定时器不是在useEffect中启动的,那就一定有闭包问题。同样的还有useCallback,useMemo,学到后面会接触到。


回答第三个问题:单独调用setCount不是闭包。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信