今天我和一个同事讨论了在useEffect
中使用"return
"键来停止代码执行的问题。我了解到使用return
应该只在清理时进行。
问题:
useEffect(() => {
if (stateCondition) {
//do fancy stuff
return;
}
// more code to execute if condition is not met
}, [props]);
我的看法是,我们也许应该有另一个useEffect
,它只在状态为false时执行,而不使用上面的"return
"。
我正试图找到一些文件来支持我的索赔,但到目前为止,我还没有能够。
- 我正在寻找的:**
我说得对吗?有证明我的索赔的文件吗?或者正好相反?
1条答案
按热度按时间jdzmm42g1#
return;
显式返回undefined
,而任何不返回任何内容的JavaScript函数都已经隐式返回了undefined
。React框架知道不要执行
undefined
清理函数,因此不会造成任何伤害。从
useEffect
函数返回除cleanup函数或undefined
之外的 anything else 可能会导致bug。如果你愿意,你可以测试它,但这是一个没有实际意义的问题,只不过是一时的好奇心,因为你不应该像cleaning up fromuseEffect
is documented那样返回函数。useEffect
中使用return
,除非它是 * 显式的 * 一个清理函数。即使在这个特定的情况下没有造成伤害,其他开发人员可能不知道这一点,并可能对从一个效果返回感到困惑。对于这种特殊情况,简单的
else
块似乎会产生相同的逻辑。