如何解决:错误:操作必须是普通对象。使用自定义中间件进行异步操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决:错误:操作必须是普通对象。使用自定义中间件进行异步操作相关的知识,希望对你有一定的参考价值。
我正在使用redux-thunk/ReactJs
进行异步操作,我收到的错误就像这个Error: Actions must be plain objects. Use custom middleware for async actions.
但我已经安装了redux-thunk
并在index.js
文件中配置了它
这是我的index.js
文件:
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import registerServiceWorker from './registerServiceWorker';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import myReducer from './reducers/index';
const store = createStore(
myReducer,
applyMiddleware(thunk),
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
);
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>, document.getElementById('root'));
registerServiceWorker();
这是我的'action.js'文件:
import * as types from './../constants/ActionTypes';
import callApi from '../utils/callApi';
export const actFetchProductsRequest = () => {
return dispatch => {
return callApi('products', 'GET', null).then(res => {
dispatch(actFetchProducts(res.data))
}).catch(err => console.log(err))
}
}
export const actFetchProducts = (products) => {
return {
type: types.LIST_ALL,
products
}
}
这有什么问题,谢谢?
答案
试试这个:
export const actFetchProducts = (products) => {
return ({
type: types.LIST_ALL,
products
})
}
您需要将返回对象放在括号中。如果你不这样做,那你肯定会得到这个错误。
希望,这有帮助!
以上是关于如何解决:错误:操作必须是普通对象。使用自定义中间件进行异步操作的主要内容,如果未能解决你的问题,请参考以下文章
redux-thunk:错误:动作必须是普通对象。使用自定义中间件进行异步操作
Redux 错误操作必须是普通对象。使用自定义中间件进行异步操作
错误:操作必须是普通对象。使用自定义中间件进行异步操作。我究竟做错了啥?