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

HoC*_*Co_ 4 javascript object reactjs

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

这是我的代码:

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

(...) 
  <div>
     <label htmlFor=""> Title : </label>
     <input type="text" name="title"  onChange={this.onChange} value={this.state.title} />
  </div>
</form>
Run Code Online (Sandbox Code Playgroud)

Tom*_*zyk 8

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

相关。

代替这个:

<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});
}
Run Code Online (Sandbox Code Playgroud)

我们只能像您介绍的那样编写一个处理程序:

<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});
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢 Tomasz,所以它只是关于计算属性,我认为在以下语法的情况下:`onChange (e) { this.setState({ e.target.name : e.target.value}); } ` 因为我们调用了“ e ”参数,每个元素自然会在 e.target.name 中获得自己的值。我将关注文档以很好地了解这里的工作原理 (2认同)
  • 您需要方括号来说明这是指动态键名 (2认同)