2016-05-18 10 views
2

Ich möchte mit der Zustandswert auf den Button klicken ändern reagieren js.I Lage am Ereignis .Aber den eingestellten Wert nicht aktualisiert erhalten klicken warum .Ich dieses Wie setze ich den Wert auf die Schaltfläche klicken Sie auf reagieren js?

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

hier

verwendet wird, ist mein Code 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

Wenn Sie ES6-Klassen verwenden, müssen Sie dies an Ihre Handler binden. Fügen Sie z. B. in Ihrem Konstruktor 'this.btnClick = this.btnClick.bind (this)' http://stackoverflow.com/questions/36309636/why-binding-is-needed-in-es6-react-classes hinzu –

Antwort

3

Zwei Dinge:

1) Außerhalb der Konstruktor, sollten Sie setState (statt Zustand direkt Einstellung) aufrufen. Es sieht so aus, als hättest du das wahrscheinlich probiert, da es auskommentiert ist.

2) Sie müssen this binden, damit Sie den richtigen Wert innerhalb btnClick haben.

Hier ist eine schnelle Abzweigung von Ihrem Codepen mit dieser behoben. 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')) 
Verwandte Themen