我正在支持基于React的CMS,但我陷入了性能问题,因为添加10个新输入字段会使浏览器处理时间增加1秒。这不是我的代码,我没有React的经验。我有分析方面的经验,并对渲染引擎的工作原理有粗略的了解。
我已经钩上了 ReactCompositeComponent._updateRenderedComponent 函数,以查看主要性能瓶颈在哪里,区别似乎是我获得了很多成功。在日历输入中添加40个转发器项目会导致这种性能差异(表单必须支持200多个输入,当前需要20秒):
是什么会导致仅添加几个元素就产生如此多的匹配?
这是Chrome DevTool分析图(单击可获得完整尺寸):
答案 0 :(得分:0)
可能有许多原因影响反应性能
在渲染长列表时键的作用,键对于比较实际dom和虚拟dom是至关重要的。
突变对象,如果对对象进行突变,则ShouldComponentUpdate无法执行检查并毫不费力地触发更新生命周期。
API仅在ComponentDidMount中调用,安装部件中的任何其他生命周期都将不必要地调用render方法。
使用Debounce / Throttle作为输入参数,以避免不必要的函数/ api调用
使用虚拟化的React库,同时渲染长列表,因为它将减少大量的dom元素。
使用插件react-addons-perf计算性能。
早期绑定函数,避免绑定到渲染函数