2017-05-28 32 views
0

我正在尝试将Redux集成到reactjs.I中,在开发工具中发现了以下错误消息。我可以知道这究竟是什么,我们该如何解决它?未捕获(承诺)错误:操作必须是普通对象。使用自定义中间件进行异步操作

Uncaught (in promise) Error: Actions must be plain objects. Use custom middleware for async actions. 
    at dispatch (createStore.js:158) 
    at eval (middleware.js:22) 
    at eval (middleware.js:67) 
    at Object.eval [as callApi] (bindActionCreators.js:5) 
    at HomePage.componentDidMount (eval at ./app/containers/HomePage/index.js (0.chunk.js:154), <anonymous>:101:28) 
    at HomePage.proxiedComponentDidMount (eval at ./node_modules/react-proxy/modules/createPrototypeProxy.js (0.chunk.js:943), <anonymous>:61:40) 
    at eval (ReactCompositeComponent.js:265) 
    at measureLifeCyclePerf (ReactCompositeComponent.js:75) 
    at eval (ReactCompositeComponent.js:264) 
    at CallbackQueue.notifyAll (CallbackQueue.js:76) 
+0

我在你的代码中看到一个文件文件:'''bindActionCreators.js''',所以你想使用动作创建器。你是否正确安装了'''''''''''''''''' https://github.com/gaearon/redux-thunk#installation – dsdenes

回答

0

我想你是在dispatch函数中传递一个函数,默认情况下是不支持的。如果你想做这样的事情,你应该使用thunk中间件。

import {createStore, compose, applyMiddleware} from 'redux'; 
import thunk from 'redux-thunk'; 
import rootReducer from '../reducers'; 

function configureStoreProd(initialState) { 
    const middlewares = [ 
    // Add other middleware on this line... 

    // thunk middleware can also accept an extra argument to be passed to each thunk action 
    // https://github.com/gaearon/redux-thunk#injecting-a-custom-argument 
    thunk, 
    ]; 

    return createStore(rootReducer, initialState, compose(
     applyMiddleware(...middlewares) 
    ) 
); 
} 
+0

我会在哪里添加这些代码,或者我需要将其添加到store.js文件中? – gitu

相关问题