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

标签 javascript ecmascript-6 redux

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

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

如果 action.metaaction.meta.timestamp 未定义,此代码会将 lastRefresh 设置为 undefined定义。

我知道长格式应该是这样的:

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

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

return result

但它似乎过于冗长。 Object.assign 可能实现类似的功能吗?

最佳答案

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

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

关于javascript - 有条件地替换 redux reducer 中的状态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44704882/

相关文章:

Javascript 修改 URL 并分配 URL,而不使用源作为父级

javascript - 为什么正则表达式构造函数需要双重转义?

javascript - 需要一个函数来对 JavaScript 中的值数组进行排序,这些值是数字和字母的组合

javascript - 更新/推送新数据到 NgRedux 状态

javascript - 需要拆分返回的 JSON 字符串,以便我可以循环 JQuery

javascript - 如果目标元素被删除,带有 "body"容器集的 Bootstrap 弹出窗口不会删除弹出窗口

javascript - 'require' 与 'import' es6 有何不同?

javascript - 如果我屈服于 Promise,它会在继续之前等待 Promise 被解决吗

javascript - React PureComponent 会比 Component 慢吗?如何?

javascript - 无法使用react和redux在组件中显示数据