【问题标题】:Problems with architecture of the redux storeredux store 架构的问题
【发布时间】:2017-01-13 19:40:17
【问题描述】:

我正在开发一个具有多个状态(reducer)的应用程序。假设它们是消息、喜欢、cmets(它们都来自完全不同的实例,所以我不确定是否应该将它们组合成一个状态)。

每 30 秒我向服务器发出请求,我收到的响应说明我的应用程序的哪些部分已更新。例如。我收到了新消息或新评论。

我真的不知道如何处理这些响应。首先,我可以简单地让容器更新所有其他状态,但我认为这不是一个好主意,因为每个容器都应该有自己的状态。

其次,我可以创建一个中间件来捕获每个动作,找到具有所需信息的那个并触发另一个动作(例如新消息)。之后,消息的 reducer 将捕获此操作。但我再次不确定这是否是正确的方法,原因有两个:

  1. 是否可以从中间件拍摄动作(不是双向流)?
  2. 我该怎么做?

提前致谢。

UPD。我使用中间件做到了,但我仍然不确定这是否是正确的方法。在我的中间件中,我使用 store.getState()... 获取所需的数据,然后创建 store.dispatch(myAction)。没事吧?

【问题讨论】:

    标签: reactjs redux


    【解决方案1】:

    了解 reducer /= 状态很重要。 (reducer 不等于状态)

    您的应用程序应该有一个状态,一个商店。使用 combineReducers 可以很好地......结合 reducer 以将所有内容保持在一个状态。

    http://redux.js.org/docs/api/combineReducers.html

    您需要处理异步行为,这是 redux 不默认的行为,因此您必须使用某种中间件 - 这意味着您走在正确的轨道上。

    尝试使用更常见的一次,例如: https://github.com/gaearon/redux-thunk https://github.com/redux-saga/redux-saga

    建议将异步逻辑与您的应用分开。这意味着您需要在应用程序中初始化异步调用,但将异步逻辑保留在存储中。

    这是 Dan Abramov 和 Redux-Thunk 的指南,简单明了: http://redux.js.org/docs/advanced/AsyncActions.html

    希望它能回答你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多