最近我遇到了一些奇怪的useMemo钩子用法:
const memo = useMemo(callback, false);
作为第二个参数,传递 false 而不是依赖关系。
这是有效的代码吗?React 文档指出依赖关系应该是一个数组。使用假的目的是什么?
这是一个有效的代码吗?
这取决于你的意思valid
.
- 语法正确:是(JavaScript,Typescript(
- 工具允许:否(ESLINT、Flow 、TypeScript(
它是对 React API 的有效调用吗?没有。
虽然此代码今天有效,但文档中未提及false
作为依赖项列表传递,并且行为可能会在任何未来的 react 版本中更改。
总之:将您的代码更新为useMemo(callback, [])
.
实际上我已经分析了反应协调器,结果发现上面的代码等效于这个:
const memo = useMemo(callback, []);
这是因为javascript的怪癖,其中:
false.length = undefined;
false[1] = undefined;
因此:
undefined === undefined // true