是否有理由在没有依赖数组的情况下使用 useEffect?

Mis*_*oto 6 reactjs react-hooks

因此,当我们在没有依赖数组的情况下使用 useEffect 时,它会在每次渲染时发生。

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

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

小智 6

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

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

例如,如果你将 useState 更新为相同的值,React 会重新评估该函数组件,但不会触发effects,它会导致 useEffect 外部的代码执行,但不会执行 useEffect 内部的代码。

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

就是一个例子。


Gay*_*ali 2

它既是一个 ie,一个普通的 JS 函数,又是一个useEffect没有任何依赖的函数,它们做同样的工作,但区别在于:

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