我的用例很简单。我想在NotificationStore中添加一条通知消息,以便在主存储已成功更新的情况下向用户显示信息横幅。
实现这一目标的最简单方法似乎是在我的主要商店内提出一项行动:
onSaveRule: function() {
localStorage.setItem("rule", JSON.stringify(_state));
action.fire("rule successfully saved!"); //mutates NotificationStore
},
但是, action.fire 行会抛出以下运行时异常:
不变违规:Dispatch.dispatch(...):无法在发送过程中发送。
显然,在商店内调用动作是一种反模式。那么达到预期效果的正确方法是什么?
答案 0 :(得分:1)
以storeA
和storeB
为例,您最初的想法是storeA
触发action
并storeB
听同一{ {1}}。
您应该action
直接收听action
状态更改storeA
,而不是直接在storeB
内触发storeA
。在triggers
状态更改和调用storeA
以通知您的trigger
时,components
的含义也将由同一storeB
通知。然后,trigger
可以致电storeB
以从getters
检索新状态。
在此模式中,storeA
是storeB
的派生商店。这保留了 flux 模式的单向数据流哲学。