长白癜风是怎么回事 http://m.39.net/baidianfeng/a_4424437.html
本文分为三部分,首先介绍React的工作流,让读者对React组件更新流程有宏观的认识。然后列出笔者总结的一系列优化技巧,并为稍复杂的优化技巧准备了CodeSandbox源码,以便读者实操体验。最后分享笔者使用ReactProfiler的一点心得,帮助读者更快定位性能瓶颈。
React工作流React是声明式UI库,负责将State转换为页面结构(虚拟DOM结构)后,再转换成真实DOM结构,交给浏览器渲染。当State发生改变时,React会先进行调和(Reconciliation)阶段,调和阶段结束后立刻进入提交(Commit)阶段,提交阶段结束后,新State对应的页面才被展示出来。
React的调和阶段需要做两件事。1、计算出目标State对应的虚拟DOM结构。2、寻找「将虚拟DOM结构修改为目标虚拟DOM结构」的最优更新方案。React按照深度优先遍历虚拟DOM树的方式,在一个虚拟DOM上完成两件事的计算后,再计算下一个虚拟DOM。第一件事主要是调用类组件的render方法或函数组件自身。第二件事为React内部实现的Diff算法,Diff算法会记录虚拟DOM的更新方式(如:Update、Mount、Unmount),为提交阶段做准备。
React的提交阶段也需要做两件事。1、将调和阶段记录的更新方案应用到DOM中。2、调用暴露给开发者的钩子方法,如: