Как добавить несколько промежуточных программ в Redux?

У меня есть один компонент промежуточного программного обеспечения, который уже подключен к сети, сокращенный, и я хотел бы добавить еще один редукционный логгер.

Как настроить его, чтобы мое приложение использовало оба компонента промежуточного программного обеспечения? Я попытался передать массив из [ReduxThunk, logger] но это не сработало.

Код:

import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import ReduxThunk from 'redux-thunk';
import logger from 'redux-logger';

import App from './components/app';
import reducers from './reducers';
require('./style.scss');

const createStoreWithMiddleware = applyMiddleware(ReduxThunk)(createStore);

ReactDOM.render(
  <Provider store={createStoreWithMiddleware(reducers)}>
    <App />
  </Provider>,
  document.querySelector('#app')
);

Ответы

Ответ 1

applyMiddleware берет каждую часть промежуточного программного обеспечения в качестве нового аргумента (а не массива). Так что просто пройдите в каждую часть промежуточного программного обеспечения, которое вы хотели бы.

const createStoreWithMiddleware = applyMiddleware(ReduxThunk, logger)(createStore);

Ответ 2

ответ от andy - это хорошо, но, подумайте, что ваши средние слои растут, ниже кодов будет лучше:

const middlewares = [ReduxThunk, logger]
applyMiddleware(...middlewares)

Ответ 3

applyMiddleware должен перейти в createStore как второй параметр. applyMiddleware может иметь несколько applyMiddleware качестве аргументов.

const store = createStore(reducers, applyMiddleware(ReduxThunk, logger));

ReactDOM.render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.querySelector('#app')
);

Ответ 4

Вот как применить одно или несколько промежуточных программ:

import {createStore, applyMiddleware} from 'redux';
import thunk from 'redux-thunk';
import logger from 'redux-logger';
import {rootReducer} from "../reducers"; // Import your combined reducers ;)

const middleWares = [thunk, logger]; // Put the list of third part plugins in an array 

// Create the store with the applied middleWares and export it
export const store = createStore(rootReducer, applyMiddleware(...middleWares));

Теперь импортируйте недавно экспортированный магазин в ваш index.js и передайте его компоненту Provider. Ваш файл index.js должен выглядеть так:

......

import {Provider} from 'react-redux';
import {store} from './store';

ReactDOM.render(
    <Provider store={store}>
        <App />
    </Provider>, 
document.getElementById('root'));

Все это !