Как составить правило для набора комбинированных редукторов в Redux? - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть два стандартных редуктора, которые выглядят так:

Редуктор1

const reducer1 = (state, action) => {
  switch(action.type) {
    case('clear'):
      return {
        ...state,
        reducer1property1: null
      }
    ...<other cases>...
  }
}

Редуктор2

const reducer2 = (state, action) => {
  switch(action.type) {
    case('clear'):
      return {
        ...state,
        reducer2property1: null
      }
    ...<other cases>...
  }
}

Так что, если я отправлю действие типа «очистить», свойство1 будет очищено в обоих редукторах.

Я комбинирую редукторы следующим образом:

const combinedReducer = combineReducers({
  Reducer1,
  Reducer2
})

Мой вопрос: есть ли способ сделать это без записи «чистого» случая в каждом редукторе отдельно?Например, есть ли способ добавить «чистый» случай в combinedReducer, чтобы я мог написать его только один раз?В моем настоящем приложении есть еще много редукторов, поэтому я хочу упростить.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Вот тут-то и возникает понятие «редуктор высшего порядка». Если функциональность общая, напишите ее один раз и используйте этот редуктор для «обертывания» любых других редукторов, которым необходимо такое поведение.В вашем случае, что-то вроде:

const rootReducer = combineReducers({
    reducer1 : closeable(reducer1),
    reducer2 : closeable(reducer2),
});

См. Страницу Redux Docs на "Повторное использование логики редуктора" , это слайд-шоу на Сила редукторов высшего порядка ,и некоторые другие статьи о Редукторах и селекторах Redux для получения более подробной информации.

0 голосов
/ 22 февраля 2019

Нет.Комбайн редуктор получает только редукторы.

Так как каждый редуктор отвечает за отдельный фрагмент состояния, если вы хотите, чтобы действие «clear» применялось ко всем редукторам, вы должны обрабатывать его во всех них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...