export function exportOrder(woIds, showfields, id)
{
return dispatch => {
dispatch({
type: GET_ORDER_LIST_PROGRESS,
progress: LoadProgressConst.SAVING
});
let isNowValue = false,
filterId = id || '',
exportData = {
siteId: getSiteId(),
kfuserId: getUserId(),
woIds: woIds ? woIds : '',
fieldIds: showfields.toString(),
filterId: filterId,
isNow: isNowValue,
},
url = `${APIURL}/wo/dataExport/exportWo?token=${getToken()}`;
return urlLoader(url, {method: "post", body: JSON.stringify(exportData)})
.then(result => {
let {status, jsonResult: {code, msg}} = result,
progress = LoadProgressConst.SAVING_SUCCESS;
if(status === 901)
{
progress = LoadProgressConst.TIME_OUT_TOKEN;
}
else if(status !== 200 || code !== 200)
{
progress = LoadProgressConst.SAVING_FAILED;
}
dispatch({
type: GET_ORDER_LIST_PROGRESS,
progress
});
return Promise.resolve({progress, msg});
})
}
}
存在的问题:
如何在reducer文件外处理结果。
一般我们可以会在得到结果处理,但这不是最好的方法。最好的方法应该是在你当前处理逻辑的页面进行。
看优秀的地方,这是我们前端老大写的代码
let {status, jsonResult: {code, msg}} = result,
progress = LoadProgressConst.SAVING_SUCCESS;
他在这里return 一个Promise,把需要的值都带出去了。
return Promise.resolve({progress, msg});
在处理逻辑的页面中,这样运用
this.props.exportOrder(woIds, showfields, filterId)
.then(({progress, msg}) => {
if(progress === LoadProgressConst.SAVING_SUCCESS)
{
message.success(msg);
}
else
{
message.error(msg);
}
});
堪称完美!