【问题标题】:Promise Redux : TypeError: next is not a functionPromise Redux : TypeError: next 不是函数
【发布时间】:2017-03-17 16:15:56
【问题描述】:

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

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'));

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

TypeError: next 不是函数

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

const createStoreWithMiddleware = applyMiddleware(promiseMiddleware)(createStore); // App works again

怎么了?

谢谢,

【问题讨论】:

    标签: javascript reactjs redux


    【解决方案1】:

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

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

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

    (1) 减速器 -> (必需)

    (2) preLoadedState ->(可选)

    (3) enhancer -> (optional) // 这是你的 applyMiddleware 应该被传递的地方。因此,商店的最小创建是,

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

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

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

    或者干脆

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

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

    【讨论】:

    • 感谢您的帮助。不幸的是,这并不能解决错误:(
    猜你喜欢
    • 2021-11-12
    • 1970-01-01
    • 2021-03-16
    • 2017-09-24
    • 2019-02-14
    • 2023-02-21
    • 2020-08-18
    • 2018-10-22
    • 1970-01-01
    相关资源
    最近更新 更多