【发布时间】:2018-04-23 15:40:30
【问题描述】:
我在 Redux 中有以下 actionCreator:
export function updateValuesRouting(values, routingID ){
const url = `${ROOT_ROUTINGS_URL}/${routingID}/editing/meta`;
console.log("routing url:: ",url, values);
return dispatch => {
dispatch({type: UPDATE_VALUE_ROUTING_LOADING, isLoaded: false});
return axios.put(url, values)
.then(({data}) => {
console.log("returned values from updateValuesRouting:",data);
dispatch({type: UPDATE_VALUE_ROUTING, data, isLoaded:true})
return Promise.resolve();
})
.catch((err) => {
dispatch(alertMessage("danger", `${routingID} has not updated values. ${err}`));
dispatch({type: UPDATE_VALUE_ROUTING_FAILURE, isLoaded: true})
})
}
}
我想要对 axios 调用的 return 做的是返回一个 promise,所以我知道动作已经完成,我可以用它进行另一个调用。但是,在我调用的另一个 actioncreator 中:
dispatch(updateValuesRouting(values, routingID).then(//put some other code here))
而我无法到达它,说:
未捕获的 TypeError: updateValuesRouting(...).then 不是函数
我很确定这是我的语法错误。我以为我只需要在 axios 调用之前返回那个即可获得通过的承诺,但我想念的还有其他东西。提前致谢。
【问题讨论】:
-
updateValuesRouting返回一个不是axios调用的函数;它返回一个接听dispatch的电话。这不是语法错误,而是编程错误。 -
那么我该如何重写它,以便我可以调用加载并让它返回承诺?
标签: javascript reactjs redux redux-thunk