Редукторы вложенности:
Вложенные редукторы - плохая практика. Вы хотите, чтобы ваши редукторы (и срезы состояния) были как можно более плоскими. Следовательно, разбиение даст лучший опыт разработки с точки зрения обновления срезов вашего состояния. Проверьте ОбъединитьСредукторы () .
О корпусе выключателя:
Рассмотрите возможность рефакторинга вашего редуктора от формирования переключателя
export function todos(state = [], action) {
switch (action.type) {
case ActionTypes.ADD_TODO:
const text = action.text.trim()
return [...state, text]
default:
return state
}
}
К формированию хеш-таблицы
export const todos = createReducer([], {
[ActionTypes.ADD_TODO]: (state, action) => {
const text = action.text.trim()
return [...state, text]
}
})
Вы можете написать следующий помощник для выполнения этого:
function createReducer(initialState, handlers) {
return function reducer(state = initialState, action) {
if (handlers.hasOwnProperty(action.type)) {
return handlers[action.type](state, action)
} else {
return state
}
}
}
Основные преимущества использования этого подхода:
- Простой, независимо от того, используете вы его или нет.
- не беспокойтесь о дублировании имени переменной
- может использовать действие уничтожения и состояние
- может использовать синтаксис функции стрелки ES6
- hashTable быстрее, чем switch при большом количестве дел
- не нужно раздражать перерыв и по умолчанию
Ссылка:
https://redux.js.org/recipes/reducing-boilerplate#generating-reducers
https://github.com/reduxjs/redux/issues/883