我看到有人使用 0 而不是空数组作为 useEffect 中的第二个参数。
所以而不是
useEffect(() => {
console.log('Run once');
}, []);
它是useEffect(() => {
console.log('Run once');
}, 0);
它似乎具有相同的效果,所以我想知道他为什么使用它?空数组被视为 0,具体取决于您如何评估它。例如
[] == 0
是真的,但是 [] === 0
是假的。所以也许在这种情况下,引擎盖下没有严格的比较,如果你使用 0 也没关系。只需按照 react 文档,我将使用一个空数组。
React docs :
If you want to run an effect and clean it up only once (on mount and unmount), you can pass an empty array ([]) as a second argument. This tells React that your effect doesn’t depend on any values from props or state, so it never needs to re-run. This isn’t handled as a special case — it follows directly from how the dependencies array always works.
我想知道
0
是在 []
上使用的可能更简洁的二进制参数, 或者如果使用 0
是一种不好的做法,或者如果没关系,[]
只是一个首选的 React 约定?谢谢。
最佳答案
这是 useEffect 函数的签名
export function useEffect(
create: () => (() => void) | void,
deps: Array<mixed> | void | null,
): void {
const dispatcher = resolveDispatcher();
return dispatcher.useEffect(create, deps);
}
在那里你可以看到它只接受一个数组,void 或 null,所以你的问题的正确答案是如果你只想运行一次,总是发送一个数组
关于javascript - React Hooks - 0 vs. 空数组作为 useEffect 中的第二个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62781907/