反应:经常更新共享状态

时间:2018-07-02 00:28:22

标签: reactjs redux

我知道redux可以为整个应用程序建立一个中央存储(真相来源)。但是,任何属性的任何更改都要求您克隆整个状态,反映更改并返回新状态。

如果您要频繁更新应用程序状态,我认为这太多了。

我的问题是我想在不同页面中定期增加计数器组件。所有对象都应同步,因此,它们在呈现时必须从同一源读取其数据。 种子数据将在应用初始化时设置。

来源可以是Redux存储。但这会造成我一开始提到的可能的问题。

还有其他方法可以解决此问题吗?

2 个答案:

答案 0 :(得分:1)

您可以在store上使用reselect库。以下引文来自this article

  

Reselect是用于构建记忆选择器的库。我们将选择器定义为检索React组件Redux状态片段的函数。通过使用备忘录,我们可以防止不必要的重新渲染和派生数据的重新计算,从而加快我们的应用程序。

这是一个很棒的库,我认为它可以解决您的问题:)

答案 1 :(得分:1)

如果您已经在应用程序中使用Redux,我将继续使用它,直到您看到频繁更新商店带来的影响为止。 Redux的优点之一是,即使您在每次状态转换时都返回一个新对象,如果您的组件正确连接到存储,也可以避免不必要的重新渲染。 connect函数的默认选项是将连接的组件视为“纯”组件,这意味着除非在mapStateToProps中选择的特定字段发生更改而不是在任何状态下呈现,否则它将不会重新呈现。更新。话虽这么说,克隆状态对象和调用所有mapStateToProps函数仍然有开销。如果没有基准测试特定的用例和更新商店的频率,就很难说这种开销是否值得在另一个位置维护应用程序状态。

另一个选择是新重新设计的Context API。这是维护共享状态而无需在组件树中上下传递所有状态的好方法。我强烈建议您阅读文档并进行尝试。请注意在多个地方维护状态的维护成本,并确保相应地构建应用程序。