在redux状态下存储什么?

时间:2016-07-22 00:56:10

标签: reactjs redux

我正在构建一个中等规模的React / Redux应用程序,而且我对React非常熟悉 - 但是,Redux仍然有点难以理解。

我知道我可以使用Redux中的connect()将任何组件或容器连接到Redux状态。但是,我不清楚何时这样做 - 是否基于复杂性?需要将多少道具传递给子组件?

我可以使用哪些因素来确定何时使用connect()

编辑提供一个例子:-----

例如,我想在我的应用中为用户添加一个消息区域,尤其是显示未读消息数量的徽章。我只想connect()我想要展示徽章的任何组件吗?

3 个答案:

答案 0 :(得分:11)

我不同意将所有组件状态存储在商店中。我更喜欢在redux存储中只包含对应用程序整体重要的数据,因此其他组件可以从这个全局可访问的共享数据中受益。

在商店中拥有特定于组件的状态,这只对这个组件有用,是一个过度且无用的IMO。

答案 1 :(得分:4)

您可以在redux中存储应用的状态。如何构建状态树由您决定。您可以将状态树视为一个巨大的javascript对象。使用redux,理想情况下,您可以将最小的组件状态存储在您的反应组件本身中,而是将其移动到redux状态树。

例如,如果您获取了一些用户数据,则可以将其存储在redux状态,以便连接的组件现在可以访问该数据。您还可以获得描述某些UI组件的更精细和存储状态。描述下拉列表的州的一部分可能如下所示

{
  myDropdown: {
    isOpen: false,
    options: [
      'apple',
      'orange'
    ]
  }
}

我认为开始合并redux是一个很好的观点,那就是当你的应用程序达到一定程度时,你的组件不再只是“愚蠢的”#34;显示数据的组件。

编辑: 尝试回答问题"何时应该连接我的组件?"。我自己也在努力,但还没有很好的答案。现在我通常连接一个组件,如果我通过许多祖先组件传递道具专门为该组件。因此,连接将完全避免使用样板代码。

答案 2 :(得分:2)

REDUX官方页面:

https://redux.js.org/faq/organizing-state#do-i-have-to-put-all-my-state-into-redux-should-i-ever-use-reacts-setstate

用于确定应将哪种数据放入Redux的一些通用经验法则:

  1. 应用程序的其他部分是否关心此数据?
  2. 您是否需要能够基于此原始数据创建其他派生数据?
  3. 是否使用相同的数据来驱动多个组件?
  4. 能够将这种状态恢复到给定的时间点对您来说是否有价值
  5. 您是否要缓存数据
  6. 列表项

但是...这意味着在大多数关闭的应用程序中,我应该存储在Redux存储中的唯一数据是登录的用户数据。。这是唯一影响所有屏幕的实体(角色,登录名,用户设置)。

通常的应用程序不需要记住在屏幕,缓存,历史记录之间输入的数据。

非常令人困惑,所以我真的不太确定要在Redux商店中放置什么...