React Action Callback 做过渡最佳实践
React Action Callback do transition best practice
案例是我通过点击向我的用户添加一个新项目。添加项目后,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 的情况下进行调度?
简而言之:Action 函数不应该有回调来执行转换。典型的流程是:
- 您的视图监听商店的变化
- 在您看来,用户点击了某些东西
- 视图调用一个动作(没有超时)
- 商店然后响应该操作,可能是对活动项目的更新。
- 视图注意到存储的更新,然后转换到新状态。
有关使用 alt 库进行助焊剂的很好的教程可以在这里找到:http://alt.js.org/guide/
案例是我通过点击向我的用户添加一个新项目。添加项目后,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 的情况下进行调度?
简而言之:Action 函数不应该有回调来执行转换。典型的流程是:
- 您的视图监听商店的变化
- 在您看来,用户点击了某些东西
- 视图调用一个动作(没有超时)
- 商店然后响应该操作,可能是对活动项目的更新。
- 视图注意到存储的更新,然后转换到新状态。
有关使用 alt 库进行助焊剂的很好的教程可以在这里找到:http://alt.js.org/guide/