首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用动态密钥名称的Reactjs setState()?

使用动态密钥名称的Reactjs setState()?
EN

Stack Overflow用户
提问于 2015-03-26 22:01:44
回答 12查看 205.6K关注 0票数 294

编辑:这是一个副本,请参阅here

在设置状态时,我找不到任何使用动态密钥名称的示例。这就是我想要做的:

代码语言:javascript
复制
inputChangeHandler : function (event) {
    this.setState( { event.target.id  : event.target.value } );
},

其中event.target.id被用作要更新的状态密钥。这在React中是不可能的吗?

EN

回答 12

Stack Overflow用户

发布于 2015-03-26 22:47:41

感谢@Cory的提示,我使用了这个:

代码语言:javascript
复制
inputChangeHandler : function (event) {
    var stateObject = function() {
      returnObj = {};
      returnObj[this.target.id] = this.target.value;
         return returnObj;
    }.bind(event)();

    this.setState( stateObject );    
},

如果使用ES6或Babel transpiler来转换您的JSX代码,您也可以使用computed property names完成此操作:

代码语言:javascript
复制
inputChangeHandler : function (event) {
    this.setState({ [event.target.id]: event.target.value });
    // alternatively using template strings for strings
    // this.setState({ [`key${event.target.id}`]: event.target.value });
}
票数 309
EN

Stack Overflow用户

发布于 2017-09-14 10:03:54

当您需要处理多个受控输入元素时,可以为每个元素添加一个名称属性,并让处理程序函数根据event.target.name的值选择要执行的操作。

例如:

代码语言:javascript
复制
inputChangeHandler(event) {
  this.setState({ [event.target.name]: event.target.value });
}

票数 171
EN

Stack Overflow用户

发布于 2016-07-25 16:18:18

我是如何做到这一点的。

代码语言:javascript
复制
inputChangeHandler: function(event) {
  var key = event.target.id
  var val = event.target.value
  var obj  = {}
  obj[key] = val
  this.setState(obj)
},
票数 48
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29280445

复制
相关文章

相似问题

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