请稍等 ...
×

采纳答案成功!

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

请问老师有关useCallback的问题

图片描述

请问老师,是不是如果useCallBack包裹的函数内部处理了父组件的数据变更,那这个onBack就会是一个新的函数,导致Header组件重新渲染?

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

1回答

茵风泳月 2020-01-27 19:06:02

同学你好,准确的说,onBack是否是一个新的函数,完全取决于我们useCallback函数的第二个参数,这里面是声明了依赖的。如果依赖有变动,则onBack一定返回新的函数。

那么如何定义这个依赖数组呢?严格来讲,只要用到了变量,就需要声明到里面,包括函数变量。不过也有例外,比如“setState”这一类函数,React官方已经保证,对于同一个组件的同一个state,它的setState每次都返回同一个,因此它是一种“常量”。对于其它已经被保证不会变化的变量,也不需要放到依赖数组中。

---

像你说的这样,“处理了父组件的数据变更”,并不准确,同样是调用了setCount函数,也有两种方式:

setCount(1 + count)

上面这种需要引用count参数,因此count是一种依赖。

setCount(count => count + 1)

上面这种只引用了setCount函数,而我们讲到它是“常量”,因此依赖数组中什么都不必写。

祝您学习愉快!

1 回复 有任何疑惑可以回复我~
  • 老师,按照这个解释的话,不应该采用setCount(count => count + 1)吗,这样才不会在count没有变化的时候,重新生成一个事件句柄
    回复 有任何疑惑可以回复我~ 2020-11-01 08:21:27
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号