我想在我的redux reducer中在ES6中创建一个新的对象文字,只有在该操作包含特定属性时才会覆盖一个键。
return { ...state, items: newItems, lastRefresh: action.meta && action.meta.timestamp }
如果未定义lastRefresh
或undefined
,此代码会将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
可能吗?
答案 0 :(得分:2)
如果您真正想要的是覆盖state.lastRefresh:
return {
...state,
items: newItems,
lastRefresh: action.meta && action.meta.timestamp ? action.meta.timestamp : state.lastRefresh
}