在 React 中使用 immutability-helper 设置可变对象键

Using immutability-helper in React to set variable object key

我有一个函数想用 React 写。在我的 class 中,我有一个状态对象 fields 看起来像这样:

this.state = {
  step: 1,
  fields: {
    type: '',
    name: '',
    subtype: '',
    team: '',
    agreement: ''
  }
};

我有各种使用 immutability helper 分配这些键的函数,通常看起来像:

assignType(attribute) {
  var temp = update(this.state.fields, {
    type: {$set: attribute}
  });

  this.setState({
    fields: temp
  });
}

喜欢 做的是使用一个更通用的函数并执行如下操作:

assignAttribute(field, attribute) {
  var temp = update(this.state.fields, {
    field: {$set: attribute}
  });

  this.setState({
    fields: temp
  });
}

但是,这不起作用。如何使用 immutability-helper 来使用可变键?

想通了!我需要使用 ES6 computed property names 并简单地将 assignAttribute 编辑为:

assignAttribute(field, attribute) {
  var temp = update(this.state.fields, {
    [field]: {$set: attribute}
  });

  this.setState({
    fields: temp
  });
}

如果您有动态字段名称,则可以使用 [] 语法:

var data = {}
data[field] = {$set: attribute}

var temp = update(this.state.fields, data)

这得到