【发布时间】:2020-03-20 16:17:45
【问题描述】:
如果我有:useCallback(() => setData(props.data), [])
然后详尽的部门会要求我将 props.data 添加到依赖项中。
但是,如果我有:useCallback(() => setData(props.getData()), [])
然后详尽的 deps 会要求我将 props 添加到依赖项中,并告诉我应该解构它,因为 props 会改变每次渲染。
所以我的问题是,如果 props.getData 适用于非功能道具,为什么我不能将其添加到我的依赖项中?
【问题讨论】:
-
我不知道规则的细节,但是当您将函数作为“方法”调用时,这就是
props.getData()正在做的事情,那么getData可以访问props通过this。这意味着,函数props.getData可能不会改变,但props可能会改变,因此调用函数的结果可能会有所不同,即使函数本身没有改变。 -
@FelixKling 那么解构函数(const getData = props.getData)将不再与 props 中的同一个“this”绑定?还是会永远与特定版本的道具绑定?
-
如果一开始它是一个普通函数(不是箭头函数),那么它将看到
this === undefined,除非你用bind、call或apply显式设置它.
标签: reactjs react-hooks eslint