Promise Redux:TypeError:next不是函数

时间:2017-03-17 16:15:57

标签: javascript reactjs redux

我有一个小应用程序在React + Redux上运行redux-promise中间件,以便处理promise API调用。我想管理每个api调用的状态(加载,成功和错误)。所以,作为the official documentation says,我更改了applyMiddleware参数。

onPostResume

但是,当我更改appyMiddleware时,我的应用程序不再有效,我在控制台上显示此错误:

  

TypeError:next不是函数

如果我改回这一行,一切都会按预期运作。

import React from 'react';
import ReactDOM from 'react-dom';
import promiseMiddleware from 'redux-promise';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import { Router, browserHistory } from 'react-router';

import reducers from './reducers';
import routes from './routes';

const createStoreWithMiddleware = applyMiddleware(
  promiseMiddleware({
    promiseTypeSuffixes: ['LOADING', 'SUCCESS', 'ERROR'],
  }),
)(createStore);

ReactDOM.render(
  <Provider store={createStoreWithMiddleware(reducers)}>
    <Router history={browserHistory} routes={routes} />
  </Provider>
  , document.querySelector('.container'));

出了什么问题?

谢谢,

1 个答案:

答案 0 :(得分:2)

我坚信您创建商店的方式不正确。

在创建商店时,有3个参数,

createStore(reducer, preloadedState, enhancer) {...}

(1)减速剂 - &gt; (所需的)

(2)preLoadedState - &gt; (可选)

(3)增强剂 - &gt; (可选)//这是应该传递applyMiddleware的地方。因此,商店的最小创建是,

 const store = createStore(() => {});

要回答您的问题,请使用中间件创建商店,

 const store = createStore(yourReducer, {}, applyMiddleware(promiseMiddleware))

或只是

  const store = createStore(yourReducer, applyMiddleware(promiseMiddleware))

//这也应该有效,因为如果第二个参数是一个函数,那么它将被视为增强器。