React Hooks - 0 与空数组作为 useEffect 中的第二个参数

2024-01-19

我看到有人在 useEffect 中使用 0 而不是空数组作为第二个参数。

所以而不是

useEffect(() => {
    console.log('Run once');
}, []);

it was

useEffect(() => {
    console.log('Run once');
}, 0);

似乎有同样的效果,所以我想知道他为什么用这个?

空数组被视为 0,具体取决于您如何评估它。例如[] == 0是真的,但是[] === 0是假的。因此,也许在这种情况下,在幕后并没有严格的比较,如果使用 0 也没关系。

按照反应文档,我将使用一个空数组。

反应文档 https://reactjs.org/docs/hooks-effect.html:

如果你想运行一个效果并只清理一次(在安装和 unmount),您可以传递一个空数组([])作为第二个参数。这 告诉 React 你的效果不依赖于 props 中的任何值 或状态,因此它永远不需要重新运行。这不作为特殊处理 case - 它直接遵循依赖关系数组总是如何 作品。

我想知道是否0是一个可能更简洁的二进制参数,用于使用[],或者如果使用0是一种不好的做法,或者如果没关系并且[]只是一个首选的 React 约定?

Thanks.


这是 useEffect 函数的签名

export function useEffect(
  create: () => (() => void) | void,
  deps: Array<mixed> | void | null,
): void {
  const dispatcher = resolveDispatcher();
  return dispatcher.useEffect(create, deps);
}

在那里你可以看到它只接受一个数组,void或null,所以你的问题的正确答案是如果你只想运行一次就总是发送一个数组

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Hooks - 0 与空数组作为 useEffect 中的第二个参数 的相关文章

随机推荐