react hook 官网对useState的一个介绍,有一点没看懂

image.png

跳过 state 更新

调用 State Hook 的更新函数并传入当前的 state 时,React 将跳过子组件的渲染及 effect 的执行。(React 使用Object.is比较算法来比较 state。)

需要注意的是,React 可能仍需要在跳过渲染前渲染该组件。不过由于 React 不会对组件树的“深层”节点进行不必要的渲染,所以大可不必担心。如果你在渲染期间执行了高开销的计算,则可以使用useMemo来进行优化。

这里说hook每次更新state的时候跳过子组件的渲染及effect的执行,这个行为影响和之前class类中用this.setState()更新state有差别吗??

阅读 4k
2 个回答

原文

If you update a State Hook to the same value as the current state, React will bail out without rendering the children or firing effects. (React uses the Object.is comparison algorithm.)

说的是当传入相同 state时,会不重复渲染

和this.setState应该是一个道理吧(没看过源码,不过从表现上看 是一样的)

就是一个默认地浅比较,说白了就是shouldComponentUpdate的默认实现。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题