2016-04-30 40 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給國家的財產 「名」。