编写减速器的更好方法?
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,
}
}
}
使用payload的解构赋值{count, rows}
。这使得 payload 应具备的属性一目了然,并使其易于在 reducer 主体中使用。
只克隆对象一次。您有 const clonedState = { ...state }
和 return { ...clonedState }
,其中 return clonedState
会很好(或像我一样返回构造的文字)。
不要为在最终状态下只使用一次的值创建局部变量。这样更容易跟上reducer的流程。
将整个新状态构建为单个对象字面量,可以轻松判断发生了什么以及数据如何变化。
这个有点主观,但我觉得这种风格还是有一些可取之处的。
下面的代码有没有更好的写法:
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,
}
}
}
使用payload的解构赋值
{count, rows}
。这使得 payload 应具备的属性一目了然,并使其易于在 reducer 主体中使用。只克隆对象一次。您有
const clonedState = { ...state }
和return { ...clonedState }
,其中return clonedState
会很好(或像我一样返回构造的文字)。不要为在最终状态下只使用一次的值创建局部变量。这样更容易跟上reducer的流程。
将整个新状态构建为单个对象字面量,可以轻松判断发生了什么以及数据如何变化。
这个有点主观,但我觉得这种风格还是有一些可取之处的。