## 八、this.state
組件免不了要與用戶互動,React 的一大創新,就是將組件看成是一個狀態機,一開始有一個初始狀態,然后用戶互動,導致狀態變化,從而觸發重新渲染 UI (查看?[demo08](https://github.com/ruanyf/react-demos/blob/master/demo08/index.html)?)。
> ~~~
> var LikeButton = React.createClass({
> getInitialState: function() {
> return {liked: false};
> },
> handleClick: function(event) {
> this.setState({liked: !this.state.liked});
> },
> render: function() {
> var text = this.state.liked ? 'like' : 'haven\'t liked';
> return (
> <p onClick={this.handleClick}>
> You {text} this. Click to toggle.
> </p>
> );
> }
> });
>
> React.render(
> <LikeButton />,
> document.getElementById('example')
> );
> ~~~
上面代碼是一個 LikeButton 組件,它的 getInitialState 方法用于定義初始狀態,也就是一個對象,這個對象可以通過 this.state 屬性讀取。當用戶點擊組件,導致狀態變化,this.setState 方法就修改狀態值,每次修改以后,自動調用 this.render 方法,再次渲染組件。
由于 this.props 和 this.state 都用于描述組件的特性,可能會產生混淆。一個簡單的區分方法是,this.props 表示那些一旦定義,就不再改變的特性,而 this.state 是會隨著用戶互動而產生變化的特性。