在使用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 })
}
}
答案 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}