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

Cas*_*ams 53 javascript json immutability reactjs

我有一个我想在React中编写的函数.在我的课堂上,我有一个状态对象fields,如下所示:

this.state = {
  step: 1,
  fields: {
    type: '',
    name: '',
    subtype: '',
    team: '',
    agreement: ''
  }
};
Run Code Online (Sandbox Code Playgroud)

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

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

  this.setState({
    fields: temp
  });
}
Run Code Online (Sandbox Code Playgroud)

我会喜欢做的是使用一个函数,更通用的,做这样的事情:

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

  this.setState({
    fields: temp
  });
}
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.使用变量键可以做什么immutability-helper

Cas*_*ams 87

弄清楚了!我需要使用ES6计算属性名称,只需编辑assignAttribute为:

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

  this.setState({
    fields: temp
  });
}
Run Code Online (Sandbox Code Playgroud)

  • 好发现。不知道此ES6功能。请参阅其他答案,以获取更笨拙的“旧方法”。 (2认同)