2016-05-18 18 views
2

我想用更改按鈕點擊狀態值反應js.I我能夠得到單擊事件。但不更新的原因。我用這個如何設置反應js中的按鈕點擊值?

btnClick(){ 
    alert('---') 
    // this.setState({data: 'nannsd'}); 
    this.state ={data: 'sds'}; 
    } 

這裏的設定值是我的代碼 http://codepen.io/naveennsit/pen/MydPJM

class App extends React.Component{ 
    constructor(){ 
    super(); 
    this.state ={data: 'test'}; 
    } 
    btnClick(){ 
    alert('---') 
    // this.setState({data: 'nannsd'}); 
    this.state ={data: 'sds'}; 
    } 

    render(){ 
    return <div> 
     hello {this.state.data} 
     <button onClick={this.btnClick}>click</button> 
    </div> 
    } 

} 

React.render(<App/>,document.getElementById('app')) 
+0

當您使用ES6類時,您必須在您的處理程序上綁定此類。例如,在你的構造函數中加入'this.btnClick = this.btnClick.bind(this)'http://stackoverflow.com/questions/36309636/why-binding-is-needed-in-es6-react-classes –

回答

3

兩件事情:

1)構造函數外,你應該調用(的setState而不是直接設置狀態)。看起來你可能試過這個,因爲它被註釋掉了。

2)您需要綁定this,以便您在btnClick內有正確的值。

下面是你的Codepen的一個快速的叉子,這個固定起來。 http://codepen.io/juliepagano/pen/xVNyrO

class App extends React.Component{ 
    constructor(){ 
    super(); 
    this.state ={data: 'test'}; 
    } 

    btnClick(){ 
    alert('---') 
    this.setState({data: 'nannsd'}); 
    // this.state ={data: 'sds'}; 
    } 

    render(){ 
    return <div> 
     hello {this.state.data} 
     <button onClick={this.btnClick.bind(this)}>click</button> 
    </div> 
    } 

} 

React.render(<App/>,document.getElementById('app'))