编写减速器的更好方法?

Better way for writing the reducers?

下面的代码有没有更好的写法:

export const getItemsSuccess = (state, entity, payload) => {
  const {count, rows} = payload

  const clonedState = {...state}
  clonedState[entity] = {...clonedState[entity], count, rows}

  return {
    ...clonedState,
  }
}

对于像这样的简单情况,我倾向于将其内联到单个对象文字中。它使逻辑更容易理解。

export const getItemsSuccess = (state, entity, {count, rows}) => {
  return {
    ...state,
    [entity]: {
      ...state[entity],
      count,
      rows,
    }
  }
}
  1. 使用payload的解构赋值{count, rows}。这使得 payload 应具备的属性一目了然,并使其易于在 reducer 主体中使用。

  2. 只克隆对象一次。您有 const clonedState = { ...state }return { ...clonedState },其中 return clonedState 会很好(或像我一样返回构造的文字)。

  3. 不要为在最终状态下只使用一次的值创建局部变量。这样更容易跟上reducer的流程。

  4. 将整个新状态构建为单个对象字面量,可以轻松判断发生了什么以及数据如何变化。

这个有点主观,但我觉得这种风格还是有一些可取之处的。