我有一个这样的字段:
const updatedForm = Object.assign({}, this.state.form)
updatedForm[name] = value;
有没有办法使用扩展运算符或ES6进一步简化此操作?
答案 0 :(得分:2)
是的,您可以:
const updatedForm = { ...this.state.form, [name]: value };
请注意[name]
周围的方括号。这是由于在原始代码中使用了动态属性名称-这就是您在文字中使用的方式。
答案 1 :(得分:0)
这将与以下内容具有相同的作用:
const updatedForm = {...this.state.form}
updatedForm[name] = value
从某种意义上讲,它更短,并且可以达到相同的目标。
来自@Felix Kling
const updatedForm = {
...this.state.form,
[name]: value
}
因此,您可以在创建新的分布的对象的过程中定义新的键值对。
实际上,我假设使用React
。您可以执行以下操作:
class Form extends React.Component{
state = {
form: {
name: "",
age: ""
}
}
handleOnChange = (e) => {
const { name, value } = e.target
const updatedForm = {
...this.state.form,
[name]: value
}
this.setState({
form: updatedForm
})
}
render(){
const { form } = this.state
return(
<div>
<form>
<input name="name" value={form.name} onChange={this.handleOnChange}/>
<input name="age" value={form.age} onChange={this.handleOnChange}/>
</form>
</div>
)
}
}
答案 2 :(得分:0)
您也可以使用Object.assign
在一行中完成此操作:
const updatedForm = Object.assign({}, this.state.form, { [name]: value })