redux商店的架构问题

时间:2017-01-13 19:40:17

标签: reactjs redux

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

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

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

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

  1. 从中间件中拍摄动作是否可以(不会是双向流程)?
  2. 我怎么能真正做到这一点?
  3. 提前致谢。

    UPD。我是用中间件做的,但我还是不确定这是不是正确的方法。在我的中间件中,我使用store.getState()获取所需数据...然后我创建store.dispatch(myAction)。好吗?

1 个答案:

答案 0 :(得分:1)

了解减速器/ =状态非常重要。 (减速器不等于状态)

您应该有一个州,一个商店供您申请。使用combineReducers很好..结合使用reducers来保持一切状态。

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

希望它能回答你。