Лучший способ написать редукторы?

Есть ли лучший способ написать следующий код:

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,
    }
  }
}
  1. Используйте деконструктивное назначение полезной нагрузки {count, rows}. Это позволяет сразу понять, какими свойствами должна обладать полезная нагрузка, и упрощает их использование в теле редуктора.

  2. Клонируйте объекты только один раз. У тебя естьconst clonedState = { ...state } а также return { ...clonedState } где return clonedState подойдет (или вернет сконструированный литерал, как у меня).

  3. Не создавайте локальные переменные для значений, которые используются только один раз в конечном состоянии. Это облегчает отслеживание потока редуктора.

  4. Создание всего нового состояния в виде единого литерала объекта позволяет легко понять, что происходит и как меняются данные.

Это несколько субъективно, но я думаю, что в этом стиле есть свои достоинства.

Другие вопросы по тегам