Лучший способ написать редукторы?
Есть ли лучший способ написать следующий код:
export const getItemsSuccess = (state, entity, payload) => {
const {count, rows} = payload
const clonedState = {...state}
clonedState[entity] = {...clonedState[entity], count, rows}
return {
...clonedState,
}
}
1 ответ
Для простых случаев, подобных этому, я обычно встраиваю это в один литерал объекта. Это упрощает понимание логики.
export const getItemsSuccess = (state, entity, {count, rows}) => {
return {
...state,
[entity]: {
...state[entity],
count,
rows,
}
}
}
Используйте деконструктивное назначение полезной нагрузки
{count, rows}
. Это позволяет сразу понять, какими свойствами должна обладать полезная нагрузка, и упрощает их использование в теле редуктора.Клонируйте объекты только один раз. У тебя есть
const clonedState = { ...state }
а такжеreturn { ...clonedState }
гдеreturn clonedState
подойдет (или вернет сконструированный литерал, как у меня).Не создавайте локальные переменные для значений, которые используются только один раз в конечном состоянии. Это облегчает отслеживание потока редуктора.
Создание всего нового состояния в виде единого литерала объекта позволяет легко понять, что происходит и как меняются данные.
Это несколько субъективно, но я думаю, что в этом стиле есть свои достоинства.