我有一个角度为6 + ngredux的项目,我想为下一种情况提供建议:
当用户保存数据时,他应该返回到概述详细信息页面。 由于我们正在使用ngredux并从应用程序状态更新值,因此我们使用类似
的组件在组件中进行处理onSubmit(){
this.actionsCreator.save(this.model);
const route = 'details/' + this.objId;
this.router.navigate([route]);
}
我们遇到的问题是,如果“保存”方法在API中花费2-3秒,则首先将用户重定向,然后在应用状态下保存并更新模型(这是正常的-我们以错误的方式进行重定向)。
我们使用自定义中间件来调度操作。
return next => action => {
const {type, callApi, shouldCallApi, success = function () { }} = action;
if (!shouldCallApi) { return next(action);}
if (typeof callApi !== 'function') {throw new Error('Expected callApi to be a function');}
if (typeof shouldCallApi !== 'function') {throw new Error('Expected shouldCallApi to be a function');}
if (!shouldCallApi(getState())) {return;}
return callApi().subscribe(response => {
success(response);
return dispatch({type: type,payload: response || null});
});
};
因此,我想就如何处理这种情况提出建议。我们是否应该将路由器注入actionsCreator服务(这是正确的方法)并在调度时进行重定向(如果成功)?还是来自减速器?还是仅来自组件?