使用e.target.name设置setState意外令牌

时间:2017-09-07 02:52:06

标签: javascript reactjs ecmascript-6

我的onChange处理程序得到了未经检测的令牌,我想使用e.target.name,我希望是关键字,出了什么问题?

onChange = e => {
    this.setState({
        e.target.name: e.target.value //error here
    })
  }

  render() {
    return (
      <section>
        <input type="text" name="keyword" value={this.state.keyword} onChange={() => this.onChange} />
</section>
)
}

1 个答案:

答案 0 :(得分:4)

如果要使用计算属性名称,请使用以下语法:

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

  render() {
    return (
      <section>
        <input type="text" name="keyword" value={this.state.keyword} onChange={this.onChange} />
</section>
)
}

此外,您无需在匿名函数中传递onChange函数。只需将其传递给onChange prop。

即可