- 0
- 0
- 约5.8千字
- 约 7页
- 2017-06-03 发布于湖北
- 举报
高级性能
⾼级性能
人们首先会考虑的是 React 是能否和其他非 React 版本一样能快速和响应一个项
目。重新绘制 件的整个子树来回应每一个状态变化的想法让人怀疑是否这个过程中
对性能产生负面影响。React 使用几个巧妙的技巧,以减少所需的更新用户界面所需
要的昂贵的文档用户模型操作的数目。
避免调和文档对象模型
React 使用了一个虚拟的 DOM,这是的浏览器中对于 DOM 树呈现的一个描述符。
这种并行表示形式让 React 避免产生 DOM 节点和访问现有的节点,比 JavaScript
对象的操作速度较慢。当一个 件的道具或状态改变,React 决定通过构建一个新的
虚拟 DOM 来进行实际的 DOM 更新和旧的 DOM 相比是否必要。只有在比较结果不
一样的情况下,Reac t尽可能少的应用转变来融合文档对象模型。
在此之上,React 提供了一个 件的生命周期功能,shouldComponentUpdate ,
这是在重新绘制过程开始之前触发 (虚拟 DOM 比较,可能最终调和 DOM),使开
发人员能够减少过程中的循环步骤。这个函数的默认实现返回 true ,让 React 来
执行更新:
shouldComponentUpdate: function(nextProps, nextState) { return
true;
}
请记住,React 将非常频繁的调用这个函数,所以实现必须要快。 比如说你有一个
由几个聊天线程 成的消息应用程序。假设只有一个线程已经改变。如果我们
在 ChatThread 上执行 shouldComponentUpdate ,React 可以为其他线程跳过
描绘步骤:
shouldComponentUpdate: function(nextProps, nextState) { // T D
: return whether or not current chat thread is
// different to former one.}
因此,简言之,React 避免调和 DOM 产生的复杂的 DOM 操作,允许用户使
用 shouldComponentUpdate 缩短过程中的循环步骤,而且,对于那些需要更新,
通过对比虚拟的 DOM 来实现。
起作用的 shouldComponentUpdate
下面是 件的子树。对于每一个 件表示 shouldComponentUpdate 的返回值,以
及是否与虚拟的 DOM 是等价的。最后,圆的颜色指示 件是否必须调和。
在上面的例子中,由于 shouldComponentUpdate 返回值为 false ,存在 C2
中,React 没有必要产生新的虚拟的 DOM,并且因此,也不需要调和 DOM。需要
注意的是 react 甚至没有在 C4 和 C5 处调用 shouldComponentUpdate 。
对于 C1 和 C3 shouldComponentUpdate 返回 true ,所以 React 不得不深入
到叶子节点并且进行检查。
对于 C6 它返回 true ;由于和虚拟的 DOM 并不等同,它不得不调和 DOM。最后
一个有趣的例子是 C 。此节点的 React 必须计算虚拟 DOM,但因为它和原来的
DOM 相同,它不需要调和 DOM。
请注意,只有 C6 需要 React 不得不对 DOM 做转变,这是不可避免的。对于 C
通过比较虚拟的 DOM 他不需要转变,但是对 C2 的子树和 C7来说,它甚至没有计
算虚拟 DOM,只需要通过执行 shouldComponentUpdate 。
所以,我们应该如何执行 shouldComponentUpdate 呢?比如现有一个仅需呈现一
个字符串值的 件:
React.createClass({
propsTypes: { value: React.PropTypes.string.isRequired
},
render: function() { return divps.value/div;
}
});
我们可以很容易地实现 shouldComponentUpdate ,如下:
shouldComponentUpdate: function(nextProps, nextState) { return
ps.value !== nextProps.val
您可能关注的文档
- 虹润电力表单相电量表NHR-3100说明书.pdf
- 认真教你如何用U盘装系统.doc
- 谈贺兰山风电场发电五期工程电气接入布局.pdf
- 课间活动“安全第一”.ppt
- 货运安全员考试复习题范围.pdf
- 超声检测技术( Ⅱ).pdf
- 越冬池冰下水体理化因子的研究.pdf
- 输出电抗器 三相交流 出线电抗器 变频器电抗器380V.pdf
- 逆变器安装规范.docx
- 配合与公差讲解.ppt
- 2025年全国演出经纪人员资格认定考试试卷带答案(研优卷).docx
- 2025年全国演出经纪人员资格认定考试试卷完整版.docx
- 2025年全国演出经纪人员资格认定考试试题库及完整答案.docx
- 2025年全国演出经纪人员资格认定考试试卷完美版.docx
- 2025年全国演出经纪人员资格认定考试试卷含答案(实用).docx
- 2025年全国演出经纪人员资格认定考试试卷及答案(各地真题).docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
- 2025年全国演出经纪人员资格认定考试试卷及答案1套.docx
- 2025年下半年四川成都市郫都区面向社会引进公共类事业单位人员2人备考题库最新.docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
最近下载
- 深度解析(2026)《GBT 6398-2017金属材料 疲劳试验 疲劳裂纹扩展方法》(2026年)深度解析.pptx VIP
- 2025浙江绍兴越城区初升高自主招生数学试卷试题(含答案详解).docx VIP
- 大数据在桥梁结构健康监测中的应用研究.docx VIP
- catti二级笔译日语真题及答案2025.doc VIP
- 电工类本科国网考试注意事项及复习方法 .pdf VIP
- EHS100系列电液伺服使用说明书V1.5.pdf VIP
- 2024年国网北京公司考试真题.docx VIP
- 2025年甘肃省嘉峪关市中考英语试卷.docx
- 补填入党志愿书的参考格式【最新精选】.doc VIP
- JJF(蒙) 119-2025 烷基汞分析仪校准规范.docx VIP
原创力文档

文档评论(0)