2016-03-26 24 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; 
    } 

數據參數將是相同的通知一個