我看到有人在useEffect的第二个参数中使用0代替一个空数组。
因此,不再是
useEffect(() => {
console.log('Run once');
}, []);
它是
useEffect(() => {
console.log('Run once');
}, 0);
它似乎有同样的效果,所以我想知道为什么他使用了那个?
根据您的评估方式,一个空数组被视为0。例如,[] == 0
为真,但[] === 0
为假。因此,在这种情况下,可能在底层没有严格的比较,使用0并不重要。
只是按照React文档的说法,我会使用一个空数组。
如果你想运行一次效果并在卸载时清除它,你可以传递一个空数组([])作为第二个参数。这告诉React,您的effect不依赖于来自props或state的任何值,因此它永远不需要重新运行。这不会被作为特殊情况处理——它直接遵循依赖项数组的工作方式。
我想知道0
是否是一个更简洁的二进制参数,可用于[]
,或者使用0
是一种不好的实践,还是它并不重要,[]
只是React中的一种首选约定?
谢谢。