При чтении документации библиотеки Redux у меня возникает вопрос о combineReducers
.
Phase1: один редуктор
Когда у нас есть один редуктор, он обрабатывает все виды типов действий.
export default function counter(state = 0, action) {
switch (action.type) {
case 'INCREMENT':
return state + 1
case 'DECREMENT':
return state - 1
case 'FOO'
return state + 100
case 'BAR'
return state - 100
case 'SHOW_ME_THE_MONEY'
return state + 10000000000
default:
return state
}
}
Phase2: мы разделяем их на разные редукторы
Ну, у вас есть рецензент кода, который сказал, что нехорошо иметь одного бога-редуктора для обработки всех действия. Пожалуйста, создайте разные редукторы, чтобы делать разные вещи.
- cheat: SHOW_ME_THE_MONEY / FOO / BAR
- counter: INCREMENT / DECREMENT
.
export default function cheat(state = [], action) {
switch (action.type) {
case 'FOO'
return state + 100
case 'BAR'
return state - 100
case 'SHOW_ME_THE_MONEY'
return state + 10000000000
}
}
export default function counter(state = 0, action) {
switch (action.type) {
case 'INCREMENT':
return state + 1
case 'DECREMENT':
return state - 1
default:
return state
}
}
затем мы объединяем их в единицу с помощью combReducers.
import { combineReducers } from 'redux'
import todos from './cheat'
import counter from './counter'
export default combineReducers({
cheat,
counter
})
затем отправляем действие в состояние.
store.dispatch({
type: 'SHOW_ME_THE_MONEY',
text: 'To Buy new Macbook Pro 16'
})
Вопрос
Когда поступает действие FOO
, откуда государство узнает, какой дочерний редуктор должен быть выбран и использован для вычисления нового состояния?
Полагаю, что сопоставление между типом действия и редуктором является существенным, но оно кажется ненужным, что Демонстрация в документации.
- FOO -> читер
- BAR -> читер
- SHOW_ME_THE_MONEY -> читер
- INCREMENT - > счетчик-редуктор
- DECREMENT -> счетчик-редуктор