存储应该处理由操作触发的事件并将更改发送到侦听视图控制器。
他们是否也可以触发操作,例如在请求的回调中或直接在商店的注册回调中。
例如:
AppDispatcher.register(function(payload) {
switch(payload.action.actionType) {
case Constants.PAGE_CHANGED:
ActionCreator.fetchNewData();
break;
case Constants.FETCH_DATA:
// save data
Store.emitChange();
break;
}
});
Flux 架构中这样的代码是否“正确”?
谢谢 !
====== 根据评论更新:
这不是“我需要这样做。我该怎么做?”的问题,而是“这应该是一种做事方式”的问题。我猜答案是......它是你的选择。
在评论中添加了一些有用的链接,谢谢。
我对事物的理解如下:
在 Flux 架构中,视图应该是唯一触发动作的视图。将异步请求放入您的操作创建器中,回调应该启动一个新操作。
当不遵循 Flux 步骤时,store 也可以处理异步请求,但要确保回调不直接处理数据,而是触发另一个动作。请参阅 Bill Fisher 对此的回答。
在任何情况下,正如 Ben Alpert 的回答所说,您可以为用户操作创建多个操作(例如:REQUEST_START、REQUEST_SUCCESS、REQUEST_ERROR),这允许您连接到请求的不同阶段。
欢迎对此进行任何更新。