在一个组件中使用多个 useEffects 是否有任何副作用?

Does using multiple useEffects in one component have any side effects?

我使用了三个 useEffect 来控制不同的状态和 adding/removing 事件侦听器。但我不确定这是否是最佳做法?

 useEffect(() => {
    window.addEventListener('keydown', keyPressHandle)
    return () => {
      window.removeEventListener('keydown', keyPressHandle)
    }
  }, [])

  useEffect(() => {
    // do sth on state_one
  }, [state_one])

  useEffect(() => {
    // do sth on state_two
  }, [state_two])

是的,这是最佳做法 Reactjs also recommends it

Tip: Use Multiple Effects to Separate Concerns

正如 Ryan 所说,这是正确的做法。

在一个 useEffect() 中控制多个状态非常混乱,有时甚至是不可能的,具体取决于您想要实现的目标。

依赖项数组中没有任何内容意味着代码将 运行 当组件被安装并且功能等同于 componentDidMount()。

当数组中有一个值时,每次更新该值时都会触发副作用。

您可能会说,对这两种情况使用相同的 useEffect() 是不可能的。