在ReactJS中更改Store状态后调度操作(使用Alt)

时间:2016-03-26 20:10:07

标签: reactjs single-page-application

我的应用程序是一个简单的文件浏览器,它有三个组件:

  • 树:代表用户创建的目录树;
  • 简单页面:包含所选目录内容;
  • 通知组件:处理用户操作触发的消息。

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

但我需要触发一个Action,它会将结果中的消息添加到NotificationStore。这应该是一项简单的任务,但我试图长时间这样做,但没有成功。

我越接近解决的是创建一个" store.listen()"在componentDidMount()内部,然后调用我的Action(添加通知消息),这是成功触发的。但它会导致错误:"无法在调度过程中调度"。

存储状态更改后有没有办法调用操作?

更新

另一种方法是将NotificationStore与FileActions绑定,然后使用" waitFor(FileStore.dispatchToken)"然后在商店中设置消息。它可以在这种情况下起作用,但也许不适用于其他情况。

1 个答案:

答案 0 :(得分:1)

在需要收听NotificationStore操作的商店中,添加一个监听器:

yDataSent = setdiff(ScopeDataY, yDataBefore, 'stable')
yDataBefore = ScopeDataY;

这将在NotificationActions中的动作sendNotifcation之后在此商店中使用名为onActionSomething的触发器功能。

不要忘记等待来自其他通知的调度员:

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

数据参数与通知1中的相同