2017-10-11 49 views
-2

我有一個與redux的錯誤:action.type是未定義的。我已經收窄,到我的行動之一:action.type在redux中未定義

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代碼。返回調度功能也不起作用。也許它與此有關?

回答

1

您需要返回下面的代碼

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}) 
     } 
    }) 
} 
+0

調度試無論出於何種原因的錯誤仍然存​​在。 – Quesofat

+0

你也可以粘貼你的reducer代碼嗎? – Gautam

+0

我做到了。謝謝。 – Quesofat

相關問題