2015-09-10 29 views
0

大小寫是我通過點擊向我的用戶添加一個新項目的行動。當添加項目時,ActiveItemStore將被更新,然後我想要導航到活動的項目。但是目前在商店更新之前調用這個轉換。反應行動回撥做轉換最佳做法

目前代碼:

var actionListener = new ActionListeners(alt); 
var listenerRef = actionListener.addActionListener(MyItemActions.ADDED, 
    function() { 
     setTimeout(function() { // Fixes Cannot dispatch in the middle of a dispatch. 
      this.transitionTo('active-item', {locale: user.locale}); 
      // will be called before the ActiveItemStore is updated 
     }); 
    }.bind(this)); 
    actionListener.removeActionListener(listenerRef); 
}.bind(this)); 

// call action 
MyItemActions.add({ 
    id: item.id, 
    active: true 
}); 

我需要使用waitFor這種情況或最新最好的做法,以及如何避免在調度分派不setTimeout的?

回答

1

簡而言之:Action函數不應該有回調來完成轉換。典型的流程是:

  1. 你的意見聽店裏
  2. 在您看來的變化,用戶點擊的東西
  3. 視圖調用一個動作(無超時)
  4. 商店然後響應到行動,可能是活動項目的更新。
  5. 該視圖通知商店的更新,然後轉換到新的狀態。

使用助焊劑中高音庫中的一個很好的教程,可以在這裏找到:http://alt.js.org/guide/

+0

THX對您的意見將嘗試重構這一點。 –