Javascript redux中未定义action.type

Javascript redux中未定义action.type,javascript,reactjs,redux,Javascript,Reactjs,Redux,我在redux中出错:action.type未定义。我把范围缩小到我的一个行动: export function LOAD_PRODUCTS() { axios.get('http://localhost:3000/api/products') .then((res) => { return (dispatch) => { dispatch({type: 'PRODUCTS_LOADED', payload: res})

我在redux中出错:action.type未定义。我把范围缩小到我的一个行动:

export function LOAD_PRODUCTS() {
    axios.get('http://localhost:3000/api/products')
    .then((res) => {
        return (dispatch) => {
            dispatch({type: 'PRODUCTS_LOADED', payload: res})
        }
    }) 
    .catch((err) => {
        return (dispatch) => {
            dispatch({type: "PRODUCTS_ERROR", payload: err})
        }
    })
}
或者是减速器

export function reducer(
    state = {
        fbkey: '',
        userSuccess: null,
        cart: [],
        nav: null,
        tab: true,
        error: {}, 
        loading: false,
        products: []
    }, action) {


    switch (action.type) {
          case "FBTOKEN": {
            return {
                ...state,
                fbkey: action.payload
            }
          }

        case "NAV_OPEN" : {
            return {
                ...state, 
                nav: true
            }
        }

        case "NAV_CLOSE" : {
            return {
                ...state,
                nav: false
            }
        }

        case "USER_SUCCESS" : {
            return {
                ...state, 
                userSuccess: true
            }
        }

        case "USER_ERROR" : {
            return { 
                ...state,
                userSuccess: false
            }
        }

        case "ADD_TO_CART" : {
            return {
                ...state,
                cart: action.payload
            }
        }
        case "TAB_CLOSE": {
            return {
                ...state,
                tab: action.payload
            }
        }

        case "TAB_OPEN": {
            return {
                ...state, 
                tab: action.payload
            }
        }

        case "PRODUCTS_LOADED": {
            return {
                ...state,
                products: action.payload
            }
        }

        case "PRODUCTS_ERROR": {
            return {
                ...state, 
                error: action.payload
            }
        }

        case "IS_LOADING": {
            return {
                ...state, 
                loading: action.payload
            }
        }

        case "IS_NOT_LOADING": {
            return {
                ...state,
                loading: action.payload
            }
        }

        default: {
            return {
                ...state
            }
        }
    }
}
因此,该类型没有正确返回。我怎样才能解决这个问题


编辑:这里正在使用Thunk。我还添加了reducer代码。。返回分派函数也不起作用。可能与此有关?

您需要返回分派,然后尝试下面的代码

export function LOAD_PRODUCTS() {
    axios.get('http://localhost:3000/api/products')
    .then((res) => {
        return (dispatch) => {
            return dispatch({type: 'PRODUCTS_LOADED', payload: res})
        }
    }) 
    .catch((err) => {
        return (dispatch) => {
            return dispatch({type: "PRODUCTS_ERROR", payload: err})
        }
    })
}

我做到了。谢谢。只是出于好奇,出了什么问题?而且它在没有返回调度员的情况下也能工作吗?不,它不能工作。问题是action.type在该位置未定义<代码>导出默认函数routerMiddleware(历史){return function(){return function(next){return function(action){if(action.type!==CALL_history_METHOD){return next(action);}如果您对答案感兴趣,reddit就完成了