flux:如何从商店内更新商店

时间:2015-11-05 15:11:18

标签: reactjs flux

我的用例很简单。我想在NotificationStore中添加一条通知消息,以便在主存储已成功更新的情况下向用户显示信息横幅。

实现这一目标的最简单方法似乎是在我的主要商店内提出一项行动:

   onSaveRule: function() {
        localStorage.setItem("rule", JSON.stringify(_state));
        action.fire("rule successfully saved!"); //mutates NotificationStore
    },

但是, action.fire 行会抛出以下运行时异常:

不变违规:Dispatch.dispatch(...):无法在发送过程中发送。

显然,在商店内调用动作是一种反模式。那么达到预期效果的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

storeAstoreB为例,您最初的想法是storeA触发actionstoreB听同一{ {1}}。

您应该action直接收听action状态更改storeA,而不是直接在storeB内触发storeA。在triggers状态更改和调用storeA以通知您的trigger时,components的含义也将由同一storeB通知。然后,trigger可以致电storeB以从getters检索新状态。

在此模式中,storeAstoreB派生商店。这保留了 flux 模式的单向数据流哲学。