2017-03-17 14 views
0

約束API呼び出しに対処するために、redux-promiseミドルウェアでReact + Reduxを実行している小さなアプリケーションがあります。私は各APIコール(ロード、成功&エラー)の状態を管理したいと思います。だから、the official documentation says私はapplyMiddleware引数を変更します。Promise Redux:TypeError:次は関数ではありません

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 is not a function

、すべてが再び動作します。

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

何が問題なのですか。

ありがとう、

答えて

0

私は、ストアを作成する方法が間違っていると強く信じています。ストアの作成に

、3つの引数が存在する

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

(1)減速機 - >(必須)

(2)preLoadedState - >(オプション)

(3)エンハンサー - >(オプション)//ここでapplyMiddlewareを渡す必要があります。そのため、店舗の最小限の作成があり、

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

はあるべきミドルウェアと店舗、

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

または単に

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

//これを作成し、あなたの質問に答えるために2番目のパラメータが関数の場合、それはエンハンサとして扱われるため、うまくいくはずです。

+0

ありがとうございます。残念ながら、それはエラーを解決しません:( – PJS

関連する問題