2016-04-30 56 views
0

我试图不硬编码这个状态的名称,所以我可以动态生成一些组件。到目前为止,这是行不通的:如何在设置状态时通过变量?

handleChange(e) { 
    var name = e.target.name 
    console.log(name) 
    var data = !this.state.name // trying, unsuccessfully, to pass in the 'name' variable here. 
    this.setState({[name]: data}); 
    e.stopPropagation(); 
} 

调用此函数的组件是一个复选框,所以它使用true/false切换值。

<Checkbox 
    className="january" 
    label="january" 
    name="january" 
    checked={this.state.january} 
    onChange={this.handleChange.bind(this)} 
    theme="success" 
/> 

回答

1

var data = !this.state.name 

应该

var data = !this.state[name] 

什么,你这样做是accesing给国家的财产 “名”。