使用Redux Thunk的操作必须是普通对象错误

时间:2018-07-15 11:14:07

标签: reactjs redux async-await react-redux redux-thunk

在使用redux-thunk时遇到以下错误。我被困了好几天,我在堆栈溢出中找到了关于这个问题的许多答案,但是它们都没有帮助。抱歉,这可能是一个愚蠢的问题。任何帮助将不胜感激。非常感谢

我面临的错误: 未捕获的错误:动作必须是纯对象。使用自定义中间件执行异步操作。

Store.js:

import { createStore, applyMiddleware } from 'redux'
import ReduxThunk from 'redux-thunk'
import reducer from './reducers'

const store = createStore(reducer, {}, applyMiddleware(ReduxThunk))
export default store

我的动作:

export const getAllClientList = () => async (dispatch) => {
 try {
  let clientList = await axios.get(API_URL)
    dispatch({ type: types.RECEIVE_CLIENTLIST, clientList })
  } catch (e) {
    dispatch({ type: types.ERROR, message: e.message })
  }
}

2 个答案:

答案 0 :(得分:0)

我认为动作创建者必须是同步动作。但是,如果您需要使用异步逻辑进行调度和操作,则必须使用一些中间件,例如redux-thunk或redux-promise-middleware。使用后面的代码,您可以创建自己的操作

const getAllClientList = () => ({
  type: types.RECEIVE_CLIENTLIST,
  payload: axios.get(API_URL).then(() => {....}),
})

答案 1 :(得分:-1)

您是否尝试将clientList分配给操作的属性? 例如一个有效载荷:

{类型:types.RECEIVE_CLIENTLIST,有效负载:clientList}