有条件地替换redux reducer中的状态值

时间:2017-06-22 16:28:27

标签: javascript ecmascript-6 redux

我想在我的redux reducer中在ES6中创建一个新的对象文字,只有在该操作包含特定属性时才会覆盖一个键。

return { ...state, items: newItems, lastRefresh: action.meta && action.meta.timestamp }

如果未定义lastRefreshundefined,此代码会将action.meta设置为action.meta.timestamp

我知道长形式会是这样的:

let result = {
  ...state,
 items: newItems
}

if (action.meta && action.meta.timestamp) {
  result.lastRefresh = action.meta.timestamp
}

return result

但似乎是冗长的。这可能是Object.assign可能吗?

1 个答案:

答案 0 :(得分:2)

如果您真正想要的是覆盖state.lastRefresh:

return { 
  ...state, 
  items: newItems, 
  lastRefresh: action.meta && action.meta.timestamp ? action.meta.timestamp : state.lastRefresh
}