使用immutable.js对shouldComponentUpdate做出反应的最佳实现是什么?

Dam*_*oux 9 reactjs immutable.js redux

我是ImmutableJS的新手.我的应用程序实现了大型Redux Store和多个反应组件.

如我错了请纠正我:

  • 我知道Immutable的好处是保护Flux Store并避免在组件上不必要的vDom渲染变得不变的道具.
  • 要使用ImmutableJS获得更好的渲染性能,shouldComponentUpdate()必须实现.

这个功能的最佳实现是什么?

我已经找到了它的几个实现,都使用了shallowEqual()并进行了一些修改:

有人知道我应该在我的案例中使用哪种实现方式?或者没有具体实施shouldComponentUpdate()?我在这一点上略有不知所措

非常感谢你的帮助!!

Dan*_*mov 5

我知道Immutable的好处是保护Flux Store并避免在组件上不必要的vDom渲染变得不变的道具.

这与Immutable并不真正相关(如果你的意思是库).例如,你可以使用普通的对象和数组与终极版,但由于终极版要求你永远不会发生变异他们,你几乎在大多数情况下,同样的好处.因此,不可变的库可以提供一成不变的东西更新一个更好的API,但如果不发生变异平原对象或数组它不需要性能优化.

要使用ImmutableJS获得更好的渲染性能,必须实现shouldComponentUpdate().

同样,与ImmutableJS并不真正相关,但是,要从道具的不变性中受益,您需要实施shouldComponentUpdate().但是,如果您使用Redux,您可能已经使用connect()了React Redux软件包,该软件包shouldComponentUpdate()适用于大多数情况.因此,您不需要手动编写任何connect()ed组件.

有人知道我应该在我的案例中使用哪种实现方式?或者没有实现具体的shouldComponentUpdate()?我在这一点上略有不知所措

如果您没有性能问题,请不要使用它们.在大多数情况下,React本身是相当高效的,并且connect()在它之上将添加一个很好的默认实现shouldComponentUpdate().

对于未connect()编辑但仍经常更新的组件,我建议您使用react-addons-shallow-compare.它在PureRenderMixin内部使用,但由于mixins并未真正用于现代React API,因此单独的功能可以更方便.

如果您需要特殊支持Immutable.is,您确实可以使用类似的东西shallowEqualImmutable.它更好地理解不可变集合,因为它认为相同值的列表是相同的.此时,您最好针对您的应用分析不同的实现,因为具体情况可能因您的使用情况而异.

不要过早优化,在解决之前确保这是一个实际问题.