首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用不可变助手来设置可变对象键

使用不可变助手来设置可变对象键
EN

Stack Overflow用户
提问于 2017-02-22 23:55:54
回答 2查看 4.4K关注 0票数 56

我有一个函数,我想写在反应。在我的类中,我有一个状态对象fields,如下所示:

代码语言:javascript
复制
this.state = {
  step: 1,
  fields: {
    type: '',
    name: '',
    subtype: '',
    team: '',
    agreement: ''
  }
};

我有各种函数使用immutability helper分配这些键,通常如下所示:

代码语言:javascript
复制
assignType(attribute) {
  var temp = update(this.state.fields, {
    type: {$set: attribute}
  });

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

我想要做的是使用一个更通用的函数,并执行如下操作:

代码语言:javascript
复制
assignAttribute(field, attribute) {
  var temp = update(this.state.fields, {
    field: {$set: attribute}
  });

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

但是,这不管用。如何使用immutability-helper使用变量键?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-23 00:04:25

弄明白了!我需要使用ES6计算的属性名并简单地编辑assignAttribute以:

代码语言:javascript
复制
assignAttribute(field, attribute) {
  var temp = update(this.state.fields, {
    [field]: {$set: attribute}
  });

  this.setState({
    fields: temp
  });
}
票数 88
EN

Stack Overflow用户

发布于 2017-02-23 00:05:08

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

代码语言:javascript
复制
var data = {}
data[field] = {$set: attribute}

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

这就得到了如果您可以使用ES6,则会更加简洁。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42404563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档