我看到有人在useEffect的第二个参数中使用0而不是空数组。
所以代替
useEffect(() => {
console.log('Run once');
}, []);
它是
useEffect(() => {
console.log('Run once');
}, 0);
它似乎具有相同的效果,所以我想知道他为什么要使用它?
空数组根据您的评估方式被视为0。例如,[] == 0
为true,但[] === 0
为false。因此,在这种情况下,可能不需要进行严格的比较,如果您使用0,也没关系。
只是在反应文档之后,我将使用一个空数组。
如果要运行效果并仅将其清除一次(在挂载和卸载时),则可以传递一个空数组([])作为第二个参数。这告诉React您的效果不依赖于props或state的任何值,因此它不需要重新运行。这不是特殊情况,它直接取决于依赖项数组始终如何工作。
我想知道是否0
可以在over上使用可能更简洁的二进制参数[]
,或者使用0
是否是不好的做法,或者这无关紧要,[]
而只是首选的React约定?
谢谢。
这是useEffect函数的签名
export function useEffect(
create: () => (() => void) | void,
deps: Array<mixed> | void | null,
): void {
const dispatcher = resolveDispatcher();
return dispatcher.useEffect(create, deps);
}
在这里,您可以看到它仅接受一个Array,void或null,因此对您问题的正确答案是,如果您只想运行一次,则总是发送一个数组
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句