2015-11-05 103 views
1

我的用例很简单。如果我的主存储已成功更新,我想向NotificationStore添加通知消息以向用户显示信息横幅。流量:如何从商店内更新商店

实现这一目标的最简单的方法似乎是从我的主要商店内提高一个动作:

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

然而,action.fire行抛出以下运行时异常:

不可违反:Dispatch.dispatch(...):无法在派送过程中派送。

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

+0

你还有其他问题吗?如果你的问题解决了,那么你应该将帮助解决问题的答案标记为**接受**。这有助于其他人找到他们正在寻找的东西。快乐编码:) –

回答

0

使用storeAstoreB作为一个例子,在那里你原来的想法是有storeA发射的action,并有storeB听同action

而不是直接烧内storeAaction,你应该有storeB直接听storeA状态变化triggers。意思是storeA状态变化,并致电trigger通知您的componentsstoreB也将通知相同的triggerstoreB然后可以调用gettersstoreA中检索新状态。

在这种模式下,storeB衍生商店storeA。这保留了通量模式的单向数据流的理念。