React Redux:不是,应该将组件更新与Angular观察者类似

时间:2016-03-17 00:35:34

标签: angularjs reactjs redux flux

在其高级性能部分中的React讨论了关于shouldComponentUpdate函数。

它允许我们在返回false时阻止组件渲染。

对于容器组件订阅商店更新的redux,我们通常定义shouldComponentUpdate以避免在不需要时重新呈现。

所以我的询问与角度观察者自动做的不一样。摘要周期遍历所有观察者并比较表达式。

1 个答案:

答案 0 :(得分:1)

关于Redux(或任何类似于助焊剂的实现),两者绝对不相等。

首先,$ digest循环应用于双向数据绑定,而在React中,这通常是不受欢迎的。相反,通常会推广单向数据流,也称为流量范例(Redux,大部分都遵循此范例)。

其次,当您使用Redux时,商店中的状态更改将变为 immutable 。因此,值不需要“脏检查”,因为每当值改变时,“整个”值改变(其引用)。因此,React只需要通过引用进行比较,而不必实际比较那些引用点。

此外,将Redux与react-redux一起使用时,您可能根本不需要实现shouldComponentUpdate。 react-redux使用“浅比较”为您做参考检查(参见https://facebook.github.io/react/docs/shallow-compare.html)。如果你发现你仍然得到不必要的重新渲染,那么它可能与将状态映射到道具时对状态进行的突变有关。要解决此问题,您可以使用类似reselect的内容。