编辑:这是一个副本,请参阅here
在设置状态时,我找不到任何使用动态密钥名称的示例。这就是我想要做的:
inputChangeHandler : function (event) {
this.setState( { event.target.id : event.target.value } );
},
其中event.target.id被用作要更新的状态密钥。这在React中是不可能的吗?
发布于 2015-03-26 22:47:41
感谢@Cory的提示,我使用了这个:
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完成此操作:
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 });
}
发布于 2017-09-14 10:03:54
当您需要处理多个受控输入元素时,可以为每个元素添加一个名称属性,并让处理程序函数根据event.target.name的值选择要执行的操作。
例如:
inputChangeHandler(event) {
this.setState({ [event.target.name]: event.target.value });
}
发布于 2016-07-25 16:18:18
我是如何做到这一点的。
inputChangeHandler: function(event) {
var key = event.target.id
var val = event.target.value
var obj = {}
obj[key] = val
this.setState(obj)
},
https://stackoverflow.com/questions/29280445
复制相似问题