有三个问题需要请教下
来源:6-9 作业答疑

__大脑斧
2023-02-27
老师,有三个问题需要请教下,
- 图一:为什么写成++这种形式,会报ready only?
- 图二:为什么写成【count】依然可以实现功能,并没有闭包问题?
- setCount本身是一个闭包函数吗?
写回答
2回答
-
追加回答一下,正常开发中,useEffect中用到的值确实是应该添加在依赖之中,课程中这一节主要是想借此引出setState的另外一种用法,所以故意没添加,暴露出闭包的问题。
00 -
FE大公爵
2023-02-28
首先恭喜你学的真快。
回答第一个问题:不管是 count++ 还是 ++count,都会对count值做赋值操作,这个是不允许的,因为React中state是不允许直接赋值的,要通过setState修改,对应到函数式的useState写法也是一样。你即便不写count++,写count = count + 1;也是一样的,会报read only错误。
回答第二个问题:你的useEffect中添加了count依赖,这会穿透闭包,读取到的就是最新的state值,所以就正确了。如果不添加依赖,或者你的定时器不是在useEffect中启动的,那就一定有闭包问题。同样的还有useCallback,useMemo,学到后面会接触到。
回答第三个问题:单独调用setCount不是闭包。
00
相似问题
老师你这个调用你写的那个后端有跨域问题
回答 1
请教老师这个错误应当如何解决
回答 2