Итак, если ваш вопрос заключается в том, почему мы вообще используем reducers
?
Настоящий шаблон Flux является концептуальным: необходимость выпустить обновление, необходимость зарегистрировать Магазин в Диспетчер, необходимость того, чтобы Магазин был объектом (и сложности, которые возникают, когда вам нужно универсальное приложение).
Это фундаментальный выбор дизайна, который redux
сделал, вдохновленный flux
.
Если вам не нравятся switch
корпуса, а там по размеру редуктора. Ниже вы можете получить что-то вроде этого:
export const todos = createReducer([], {
[ActionTypes.ADD_TODO]: (state, action) => {
const text = action.text.trim()
return [...state, text]
}
})
Выше приведена функция, которая позволяет нам express редукторам в качестве отображения объектов из типов действий в обработчики.
createReducer
может быть определено as:
function createReducer(initialState, handlers) {
return function reducer(state = initialState, action) {
if (handlers.hasOwnProperty(action.type)) {
return handlers[action.type](state, action)
} else {
return state
}
}
}
Подробнее об этом можно прочитать здесь