React Action Callback确实转换了最佳实践

时间:2015-09-10 12:23:09

标签: javascript reactjs reactjs-flux flux react-alt

案例是我通过一个动作点击给我的用户添加一个新项目。添加Items时,将更新ActiveItemStore,然后我想导航到活动Item。但目前在更新商店之前调用了转换。

当前代码:

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 个答案:

答案 0 :(得分:1)

简而言之:Action函数不应该有回调来进行转换。典型的流程是:

  1. 您的观点会侦听商店中的更改
  2. 在您看来,用户点击了一些内容
  3. 视图调用操作(不超时)
  4. 商店然后响应该操作,可能是对活动项目的更新。
  5. 视图会注意到商店的更新,然后转换到新状态。
  6. 可以在此处找到有关使用alt库for flux的优秀教程:http://alt.js.org/guide/