从不可变对象中删除键(redux 状态)

tra*_*boy 0 immutability redux

我正在编写一个 redux reducer 来从状态对象中删除一个键:

state = {
  items: {
    key1: {foo: 'bar'},
    key2: {foo: 'baz'}
  },
  someOtherKey: 'value'
}
Run Code Online (Sandbox Code Playgroud)

我的减速机:

function reducer(state, action) {
  if (action=='DEL') {
    return {
      ...state,
      items: {
        ...state.items,
        [action.key]: undefined
      }
    }
  }
}       
Run Code Online (Sandbox Code Playgroud)

我预计这将返回一个删除了相应属性的新状态,但它返回一个新状态,其中键仍然存在于对象中,但值为undefined

ES6 中是否有一种优雅的方式来编写这样的 reducer?我想我可以使用Object.assign和删除属性,但上面的模式更具表现力,所以如果可能的话,我想这样写。

tra*_*boy 5

我最终使用了 lodash 函数omit

import { omit } from 'lodash'

function reducer(state, action) {
  if (action=='DEL') {
    return {
      ...state,
      items: omit(state.items, action.key)
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

lodash 库包含这样一个函数的事实让我假设可能没有更简单的方法可以用简单的 JavaScript 来表达操作。如果我错了,请告诉我;我很想听听。