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

发布于 2022-09-11 23:55:23 字数 574 浏览 19 评论 0

image.png

跳过 state 更新

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

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淡墨 2022-09-18 23:55:23

原文

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应该是一个道理吧(没看过源码,不过从表现上看 是一样的)

執念 2022-09-18 23:55:23

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文