移除mapStateToProps中未使用的Redux字段能否显著提升性能?
关于Redux mapStateToProps优化对大型React应用性能的影响
先拆解两个问题的实际影响:
移除mapStateToProps中未使用的属性
这部分对组件重渲染的直接影响有限——毕竟React是通过浅比较判断props是否变化,未使用的属性如果没改动,不会触发重渲染。但它的价值在于:减少Redux store更新时的不必要计算(每个组件的mapStateToProps都会在store更新时执行),大型应用里几十上百个组件都有冗余订阅的话,累积起来能降低整体运行开销;同时让代码更整洁,避免后续维护时引入新的性能隐患。从提取大对象改为获取具体小值
这个优化对减少无效重渲染的影响非常显著。Redux每次store更新都会执行所有组件的mapStateToProps,如果返回的是大对象,哪怕组件只用到其中一个属性,只要这个大对象的引用发生变化(比如reducer里返回了新对象,哪怕属性值没改),React的浅比较会判定props变化,触发组件重渲染。改成提取具体小值后,只有当这个值真的变动时,组件才会重渲染,在拥有150-200个组件的大型应用中,能大幅削减无效重渲染的次数,尤其是那些对应频繁更新state的组件,性能提升会很直观。
整体结论
在150-200个组件的大型代码库中,同时解决这两个问题确实能带来显著的性能提升:第二个优化(提取具体小值)是核心,直接减少大量无效重渲染;第一个优化虽不直接减少重渲染,但能降低Redux的计算开销,提升整体运行效率,同时改善代码可维护性。
内容的提问来源于stack exchange,提问作者Probosckie
相关产品推荐
相关产品推荐

