reactjs 在useEffect中使用“return”关键字停止代码执行是否有效?

q1qsirdb  于 2023-01-04  发布在  React
关注(0)|答案(1)|浏览(355)

今天我和一个同事讨论了在useEffect中使用"return"键来停止代码执行的问题。我了解到使用return应该只在清理时进行。
问题:

useEffect(() => {
    if (stateCondition) {
      //do fancy stuff
      return;
    }
     
    // more code to execute if condition is not met
  }, [props]);

我的看法是,我们也许应该有另一个useEffect,它只在状态为false时执行,而不使用上面的"return"。
我正试图找到一些文件来支持我的索赔,但到目前为止,我还没有能够。

    • 我正在寻找的:**

我说得对吗?有证明我的索赔的文件吗?或者正好相反?

jdzmm42g

jdzmm42g1#

  • 从技术上讲 *,在这种情况下没有什么区别,因为return;显式返回undefined,而任何不返回任何内容的JavaScript函数都已经隐式返回了undefined

React框架知道不要执行undefined清理函数,因此不会造成任何伤害。
useEffect函数返回除cleanup函数或undefined之外的 anything else 可能会导致bug。如果你愿意,你可以测试它,但这是一个没有实际意义的问题,只不过是一时的好奇心,因为你不应该像cleaning up from useEffect is documented那样返回函数。

  • 作为一个意见 *,我建议不要在任何useEffect中使用return,除非它是 * 显式的 * 一个清理函数。即使在这个特定的情况下没有造成伤害,其他开发人员可能不知道这一点,并可能对从一个效果返回感到困惑。

对于这种特殊情况,简单的else块似乎会产生相同的逻辑。

相关问题