| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 了解 React 重渲染机制 -> 正文阅读 |
|
[JavaScript知识库]了解 React 重渲染机制 |
核心概念首先,要贯彻一个思想:
也就是说,其实
当 React 渲染机制我们可以把每次渲染都当作 React 在拍一张照片(snapshot),这张照片描述了最后 html 生成的结构。当 但如上节所说,只要某个组件的 state 发生变化,那么不管其后代组件有没有 props,React 会把它们都更新个遍。 为什么 React 要这么设计呢?因为,React 并不知道你的组件是不是「每次渲染都能输出一样的结果」,就比如:
你会发现,这个组件无论 props 是什么,每次渲染的结果都是不一样的。这种组件被称为「副作用组件」,与之相反的概念是「纯组件」,也就是在相同输入下,输出也相同的组件。 React 开发团队在渲染结果方面一直都是秉承小心谨慎的态度,宁愿牺牲一些性能也不愿意冒风险渲染出不正确的页面(比如 React 在捕获到错误的时候会默认白屏)。 创建纯组件如果我们可以自信地认为自己写的组件就是纯组件,每次渲染输出的结果都是相同的。那么可以使用
这样在它的父级组件的重渲染的时候,只要 props 没变化,那么这个组件就不会被重新渲染。 那为什么 React 不把这个行为内置到框架中呢?这个逻辑感觉不是更直观,更理所当然吗?原因是性能。 作为开发者我们总是高估了「重渲染」的成本,其实 React 经过这么长时间的升级,已经把重渲染这一步优化得很好了。如果一个组件,没有很耗时的计算,但却有很多 props 依赖,那么其实新旧 props 的对比的性能损耗反而会比重新渲染更高。 反之,如果一个组件拥有比较复杂的计算逻辑,但 props 数量不多,那还是建议使用
Context 的影响说完 props,再来说说 context:
其实 context 可以被看作隐性的 props。也就是说,上面的代码可以看成下面这样:
那么这个组件的重渲染规则就和上面说的 props 如出一辙。 调试使用 或者可以实时高亮被重渲染的组件。 例外有时候可能会碰到一种情况:明明包裹了
这是因为 在 👆 上面的那个例子中,每次 App 渲染都会创建一个新的 总结
本文源自:https://www.joshwcomeau.com/react/why-react-re-renders/ |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/11 17:06:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |