【问题标题】:Is there a reason to use useEffect without dependency array?是否有理由在没有依赖数组的情况下使用 useEffect?
【发布时间】:2020-11-15 00:45:16
【问题描述】:

所以,当我们使用没有依赖数组的 useEffect 时,每次渲染都会发生这种情况。

但是,如果我只是将代码直接写到组件中,就会发生这种情况。那么有使用它的理由吗?

我能想到的一件事是使用清理功能做一些事情,但我想不出一个有效的用例。

【问题讨论】:

标签: reactjs react-hooks


【解决方案1】:

但是,如果我只是将代码直接写入组件中,就会发生这种情况。

实际上,这并不完全正确。

例如,如果你将一个useState更新为相同的值,React会重新评估函数组件但不会触发效果,它会导致useEffect之外的代码执行,而不是useEffect里面的代码。

这是官方文档中说的,Bailing out of a state update

this 就是一个例子。

【讨论】:

    【解决方案2】:

    这件事既是一个普通的 JS 函数,又是一个没有任何依赖关系的 useEffect 做同样的工作,但区别在于:

    1. useEffect 只能在 React 代码中访问 而不是普通的 JS。它在反应方面具有更大的力量。因此,Hooks 的范围仅限于 React 代码世界。
    2. 基于类的组件中,Hooks 不起作用,但常规函数可以。
    3. React 会记住您传递的函数(我们将其称为“效果”),并在执行 DOM 更新后稍后调用它,但在其他情况下可能并非如此.(重要
    4. 默认情况下,效果会在每次完成渲染后运行,但您可以选择仅在某些值发生更改时触发它们,但这对于普通的 JS 函数来说并不容易(除了问题之外,这只是一个附带优势)李>

    【讨论】:

      猜你喜欢
      • 2020-01-05
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      • 2010-10-06
      相关资源
      最近更新 更多