【发布时间】:2021-11-03 19:04:22
【问题描述】:
考虑这个例子:
let memoizedCb = React.useCallback(
memoize((param) => () => someFunction(param)),
[]
);
memoize 来自外部库,如“fast-memoize”。上面的代码给出警告:
React Hook useCallback 收到一个函数,其依赖项是 未知。改为传递内联函数
我找到了this 线程,如果我们适应我的用例,会建议将此作为解决方案(如果我没记错):
const memoizedCb = React.useMemo(
() => memoize((param) => () => someFunction(param)),
[]
);
警告是关于什么的? 为什么useMemo 解决了这个问题?
注意:someFunction 在函数组件之外定义,因此不需要它作为依赖项。
【问题讨论】:
-
这是一个 linter 警告,而不是实际错误。您可以忽略它,也可以使用不会触发它的模式(例如您从该 github 线程获得的
useMemo)。 -
@JaredSmith 我看到这是一个 linter 警告我试图解释为什么
useMemo没有警告 -
询问编写 eslint 插件的人。你说得对,两者在逻辑上是等价的。也许有相同的规则,毕竟你将一个内联函数传递给
useMemo。 -
@JaredSmith 是的,这就是我感到困惑的原因,因为两者看起来一样:)
-
useCallback 已经记住了函数,因此使用另一个实用程序来记住内联函数是多余且不必要的。
标签: javascript reactjs react-hooks usecallback