2016-03-26 27 views
0

我的应用程序是一个简单的文件浏览器,并有三个组件后一个动作:调度在ReactJS存储状态变化(ALT)

  • 一棵树:代表由用户创建一个目录树;
  • 一个简单的页面:与选定的目录内容;
  • 通知组件:处理用户操作触发的消息。

当用户创建一个新文件夹时,文件存储(包含所有与这两个组件有关的数据)会随服务器响应而更新并通知组件,并且工作正常。

但我需要触发一个操作,该操作会将结果添加到NotificationStore消息中。这应该是一件容易的事情,但我试图做很长时间,没有成功。

我要解决的问题是在componentDidMount()中创建一个“store.listen()”,然后调用我的Action(添加通知消息),该Action被成功触发。但是它会导致一个错误:“不能在调度中间调度”。

有没有办法在商店状态更改后调用操作?

更新:

一种替代可以结合与FileActions的NotificationStore,然后使用“WAITFOR(FileStore.dispatchToken)”,然后将在存储的消息。它可以在这种情况下工作,但可能不在其他情况下。

回答

0

在您的存储需要听NotificationStore行动中,添加一个监听器:

 this.bindListeners({ 
     onActionSomething: NotificationAction.sendNotifcation 
    }); 

这将触发功能在这家商店在NotificationActions行动sendNotifcation后调用onActionSomething。

不要忘了WAITFOR从其他通知调度员:

onActionSomething(data) { 
     this.waitFor(NotificationStore); 
     this.pages = data; 
    } 

数据参数将是相同的通知一个