有三个问题需要请教下

来源:6-9 作业答疑

__大脑斧

2023-02-27

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

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

2回答

FE大公爵

2023-02-28

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

0
0

FE大公爵

2023-02-28

首先恭喜你学的真快。

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


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


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

0
0

RN从0到1系统精讲与小红书APP实战

30+小案例+2个实战项目,快人一步提升个职业竞争力

295 学习 · 211 问题

查看课程