在Axios.post和调度操作之后,无法在Redux Thunk中执行回调

时间:2018-07-27 11:03:13

标签: reactjs react-redux axios redux-thunk redux-promise-middleware

我写了一个redux thunk,以便在向API发出发布请求后,将调度一个动作并执行一个回调:

import actionTypes from '../actions/actionTypes';
import axios from 'axios';

function postThunk(someValue, callback) {
 return dispatch => {
    try {
        let token = localStorage.getItem('token');
        const credentials = {
            headers: {
                "Authorization" : 'Bearer '+ token,
              },
            };
        const data = {
            someValue
        }
        axios.post('http://myAPI',data, credentials).then(result =>{
            dispatch({
                type: actionTypes.MY_ACTION,
                data: result,
            })
        });
        callback();
    } catch (error) {
        console.log(error);
    }
}
}

export{
 postThunk
};

当我调用thunk时,回调实际上只是一个this.props.history.push(/somelocation)。 因此,正如上面所写的那样,它可以工作,但是我实际上希望回调位于axios.post承诺链内,因为redicrect仅应在POST请求之后发生。但是,如果我将代码更改为此:

            axios.post('http://myAPI',data, credentials).then(result =>{
            dispatch({
                type: actionTypes.MY_ACTION,
                data: result,
            });
            callback();
        });

以某种方式不再起作用。 POST请求正在发生,并且数据库已更新,但是没有重定向同一页面,而是进行了重新加载,这使得调试起来也非常困难,因为我真的看不到发生了什么。 有谁知道我需要照顾什么,是调度抛出错误还是我需要一个Redux Prom中间件?

0 个答案:

没有答案