state
state
用状态控制组件变化 可以把一个组件看做一个状态机, 每一次状态对应于组件的一个 ui
组件内部的状态,可以使用 state
import React from 'react'
class App extends React.Component{
constructor(){
super();
this.state={
num:0,
show:false
}
}
handleAdd(){
this.setState({num: this.state.num+1})
}
handleCut(){
this.setState({num: this.state.num-1})
}
show(){
this.setState({show:!this.state.show})
}
render(){
let _this=this;
setInterval(()=>this.state.num)
return(
<div>
数字是:{this.state.num}
<button onClick={this.handleAdd.bind(this)}>+1</button>
<button onClick={this.handleCut.bind(this)}>-1</button>
<button onClick={this.show.bind(this)}>{this.state.show?'隐藏':'显示'}</button>
<p style=>你现在显示吗{this.state.show?'显示':'不显示'}</p>
</div>
)
}
}
export default App;
- 首先要定义一个状态,代码如下
constructor(){ super(); this.state={ num:0 } }
- 然后修改state
state项目示例
示例1:用state做点击加1的功能
class App extends React.Component{
constructor(){
super(); //在继承里如果定义constructor,要在顶部加super方法
this.state={ //定义一个state
const: 0 //给state里的const属性一个值
}
}
add(){
this.setState({const:this.state.const+1}) //修改state
}
render(){
return(
<div>
数字是:{this.state.const} //显示state里const属性的值
<button onClick={this.add.bind(this)}>+1</button> //点击事件,执行add方法修改state
</div>
)
}
}
示例1:用state做随机功能
import React from 'react';
let data=['白菜','青菜','大豆','花生','蘑菇','小麦'];
class EatWhat extends React.Component{
constructor(){
super();
this.state={
start:false,
data,
text:''
}
}
select(){
let result=this.state.data[Math.floor(Math.random()*this.state.data.length)]
this.setState({text:result})
}
Click(){
this.setState({start:!this.state.start})
if(this.state.start){
clearInterval(this.interval)
this.setState({start:false})
}else{
this.interval=setInterval(()=>this.select(),130);
this.setState({start:true})
}
}
render(){
return(
<div>
<p>今天吃什么:{this.state.text}</p>
<button onClick={this.Click.bind(this)}>{this.state.start?'停止':'开始'}</button>
</div>
)
}
}
export default EatWhat;
示例2:选项卡
class SelectBar extends React.Component{
constructor(){
super();
this.state={
show:0
}
}
handleClick(num){
this.setState({show:num})
}
render(){
return(
<div>
<button onClick={this.handleClick.bind(this,0)}>选项卡一</button>
<button onClick={this.handleClick.bind(this,1)}>选项卡二</button>
<button onClick={this.handleClick.bind(this,2)}>选项卡三</button>
<div style=>
{this.state.show===0?<Tab1 />:this.state.show===1?<Tab2 />:<Tab3 />}
</div>
</div>
)
}
}
bind()方法改变this指向