我们需要将e.target.name放在方括号[]中吗?

时间:2018-05-16 16:57:43

标签: javascript reactjs object

为什么当我使用表单元素时,我必须将e.arget.name放在括号中?

这是我的代码:

<button (click)="filtrarData()" class="btn btn-outline-primary">Vehículos</button>

1 个答案:

答案 0 :(得分:7)

这是动态更新对象属性(当属性的名称是未知的,但是在运行时)。这样,您可以使多个React输入具有不同的name属性,并使用相同的onChange处理程序来更新状态的一部分。

相关to this

而不是:

<input type="text" name="title" onChange={this.onTitleChange} value={this.state.title} />
<input type="text" name="address" onChange={this.onDescriptionChange} value={this.state.address} />
<input type="text" name="description" onChange={this.onAddressChange} value={this.state.description} />

onTitleChange (e) {
   this.setState({ title : e.target.value});
}
onAddressChange (e) {
   this.setState({ address : e.target.value});
}
onDescriptionChange (e) {
   this.setState({ description : e.target.value});
}

我们只能编写一个像你一样的处理程序:

<input type="text" name="title" onChange={this.onChange} value={this.state.title} />
<input type="text" name="address" onChange={this.onChange} value={this.state.address} />
<input type="text" name="description" onChange={this.onChange} value={this.state.description} />

onChange (e) {
   this.setState({ [e.target.name] : e.target.value});
}