Redux Thunk, разница между использованием его в качестве списка или в качестве объекта - PullRequest
0 голосов
/ 18 сентября 2018

Я читаю код реактивного проекта, который я нашел на GitHub, и я нашел другое применение избыточного толка, увидев официальную документацию на GitHub, они используют его следующим образом:

import { createStore, applyMiddleware } from 'redux';
import thunk from 'redux-thunk';
import rootReducer from './reducers/index';

// Note: this API requires redux@>=3.1.0
const store = createStore(
  rootReducer,
  applyMiddleware(thunk)
);

, нов коде, который я нашел, использовал парень:

import { AsyncStorage } from 'react-native';
import { applyMiddleware, createStore } from 'redux';
import { autoRehydrate, persistStore } from 'redux-persist'
import thunk from 'redux-thunk';
import reducers from '../reducers';

const middleWare = [thunk];

const createStoreWithMiddleware = applyMiddleware(...middleWare)(createStore);

export default configureStore = (onComplete) => {
  const store = autoRehydrate()(createStoreWithMiddleware)(reducers);
  persistStore(store, { storage: AsyncStorage }, onComplete);

  return store;
};

в чем разница между использованием его в качестве списка или объекта?

1 Ответ

0 голосов
/ 18 сентября 2018

Давайте посмотрим на сигнатуру функции ( source ):

function applyMiddleware(...middlewares) { /* logic */ }

applyMiddleware использует синтаксис параметра rest , который позволяет представлять неопределенное количество аргументов как массив .

Из-за этого оба значения

applyMiddleware(thunk, otherMiddleware);

и

const middlewares = [thunk, otherMiddleware];
applyMiddleware(...middlewares);

одинаково действительны.

...