自定义 React Hook 是否应该导致依赖组件的重新渲染?

Mag*_*nus 5 javascript reactjs react-hooks

我刚刚创建了一个自定义的钩子,用途useStateuseEffect内部。

当我将该钩子导入另一个 React 函数组件时,调用它ComponentAComponentA每当自定义钩子中的状态发生变化时重新渲染。

ComponentA当它使用的钩子返回新值时,应该重新渲染是否正确?

有关其他问题的说明,请参阅代码中的注释。

代码:

const ComponentA = props => {
  const myValue = useMyValue();

  // COMMENTS:
  // Whenever myValue returns a new value, ComponentA re-renders
  // This in turn will cause the useMyValue() function to run.
  // Seems unnatural with such a circular effect.
  // Is my suspicion unfounded? Is this how it should work?
}
Run Code Online (Sandbox Code Playgroud)

Shu*_*tri 10

自定义可以简单地视为从功能组件内执行的函数,并且有效地将自定义钩子中存在的钩子转移到组件上。因此,如果自定义钩子中的代码直接编写在功能组件中,任何通常会导致组件重新渲染的更改都将导致重新渲染,即使该钩子是自定义钩子。

  • 这是我的怀疑,谢谢舒巴姆。对于其他人的参考,文档暗示了同一点:https://reactjs.org/docs/hooks-custom.html#using-a-custom-hook(“对 Hook 的每次调用都会获得隔离状态。因为我们调用直接 useFriendStatus,从 React 的角度来看,我们的组件只是调用 useState 和 useEffect`) (2认同)