import React from 'react' export default class ClickS extends React.Component { constructor () { super() this.state= { msg: '123' } } render () { return <div> <button onClick={()=>this.show()}>按鈕</button> <h2>{this.state.msg}</h2> </div> } show () { console.log(this) this.setState({ msg: '222' }) } }
也能夠這麼寫javascript
<button onClick={this.show.bind(this)}>按鈕</button>
show () { console.log(this) this.setState({ msg: '222' }, () => { console.log(this.state.msg) // 更新後的值222 }) console.log(this.state.msg) // 123 }
注意:java
在React中想爲state中的數據從新賦值,不要使用this.state.xxx = 值。應該使用React提供的this.setState({鍵名:值})來進行修改。react
若是this.state有多個值,而只對其中一個進行修改,並不會影響其餘的值。應setState只會把對應state狀態值更新,而不會覆蓋其餘的state狀態值。
異步
同時,this.setState方法的執行是異步的。因此想要獲取最新的狀態值。須要經過回調函數。函數