首页 > 解决方案 > 为什么函数依赖项的处理方式与其他依赖项不同?

问题描述

如果我有:useCallback(() => setData(props.data), [])

然后详尽的部门会要求我将props.data添加到依赖项。

但是,如果我有:useCallback(() => setData(props.getData()), [])

然后详尽的部门会要求我向依赖项添加道具,并告诉我应该解构它,因为道具会改变每次渲染。

所以我的问题是,如果它适用于非功能道具,为什么我不能将props.getData添加到我的依赖项中?

标签: reactjsreact-hookseslint

解决方案


这可能是 JavaScript 分配内存的方式。

当您创建变量时,例如const x = 'myString'JavaScript 将为字符串分配内存,它对对象、数字和函数的处理方式不同,这些都被视为“可调用对象”。

因此,通过将 props.getData 解构为const { getData } = props,您所做的是为 getData 创建一个新指针,这意味着将其添加为依赖项,它将独立于 props 处理。


推荐阅读