我有一个小应用程序在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'));
出了什么问题?
谢谢,
答案 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))
//这也应该有效,因为如果第二个参数是一个函数,那么它将被视为增强器。