React组件状态下移和内容提升怎么实现(react,开发技术)

时间:2024-05-05 03:02:16 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    React%E7%BB%84%E4%BB%B6%E7%8A%B6%E6%80%81%E4%B8%8B%E7%A7%BB%E5%92%8C%E5%86%85%E5%AE%B9%E6%8F%90%E5%8D%87%E6%80%8E%E4%B9%88%E5%AE%9E%E7%8E%B0

希望大家仔细阅读,能够学有所成!

两个简单实用的优化组件渲染性能的方法:

状态下移

内容提升

在讲解这两种方法之前,我们需要先手动创建一个有严重渲染性能的组件,如下所示:

很显然,当 App 组件内的状态发生了改变,ExpensiveTree 组件会 re-render, 事实上 ExpensiveTree 组件的 props、state 并未发生改变,这并不是我们期望的结果,下面将提供两种简单的方法,提升组件渲染的性能;

我们可以看到以上 ExpensiveTree 组件并不依赖 App 组件内部的状态,因此我们是否可以考虑,将依赖 color 的元素抽离到一个依赖 color 的组件中呢?
下面是实践后的代码:

此时,将依赖 color 的元素提取到了 Form 组件中,Form 组件内部的状态不再影响 ExpensiveTree 组件的渲染,问题便得到了解决

以上情况是高开销组件 ExpensiveTree 的父节点依赖 color,此时显然状态下移是行不通的,但是还有另外一种办法:

此时和状态提升是完全相反的,将依赖 color 的元素提升到了 ColorPicker 组件中,而不依赖 color 的元素以 children prop 的形式传入了 ColorPicker ,当组件内部的状态改变时:

ColorPicker 会重新渲染但是它仍然保存着

ColorPicker 的 children 属性未变化 React 并不会访问那棵子树。 因此,ExpensiveTree不会重新渲染。

本文:React组件状态下移和内容提升怎么实现的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:nodejs事件循环是什么下一篇:

21 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18