【问题标题】:Why can I not set this state in React?为什么我不能在 React 中设置这个状态?
【发布时间】:2015-11-18 01:53:30
【问题描述】:

我正在尝试在我的 React 组件中设置状态,以便它在其子项的输入值发生变化时发生变化。我可以控制台记录event.target.nameevent.target.value 并获得预期的字符串,但我无法编译这个handleChange 函数:

handleChange: function(event){
    this.setState({event.target.name: event.target.value});
  },

我很困惑,因为我收到错误:Unexpected Token 在我的 this.setState({event.target.name: event.target.value}); 语句的行中。

我的子组件看起来像:

<div className='inputrow'>
    <label className='orange'></label>
    <label className='inputname'>Company</label>
    <input name='company' onChange={this.props.handleChange} className='inputtext'></input>
</div>

我的 getInitialState 是:

getInitialState: function(){
    return {
        'company': '',
        'sensor': '',
        'trigger': '',
        'sourceip': '',
        'sourceport': '',
        'destip': '',
        'destport': '',
        'sourcename': '',
        'destname': '',
        'comments': '',
        'creator': ''
    };
  }

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    在 ES6 之前,您不能在对象字面量中使用动态键。

    handleChange: function(event){
      var obj = {};
      obj[event.target.name] = event.target.value;
      this.setState(obj);
    },
    

    【讨论】:

    • this.setState({[event.target.name]: event.target.value});也有效。但是语法是什么?我不知道,你知道吗?
    猜你喜欢
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多