0
点赞
收藏
分享

微信扫一扫

React 项目----setState 方法修改 state (16)


在class 类中,构造器里面有一个实例变量state ,这个也是class 组件和function组件之间的区别。class 组件有自己的私有的数据

export default class BindEvent extends React.Component{

constructor(){
super()
this.state={
msg:"你好啊",
name:"wdg",
age:18
}
}
render(){
return <div>
<p>BindEvent 组件</p>
<hr />
<button onClick={()=>{this.show('wdg')}}>按钮</button>
</div>
}

btnClickFunc(){
console.log("22222222222");
}

show(name){
console.log(name)
}

}

那么我们应该如何修改state这个实例属性的值,比如上面的代码中,在state 中有若干个属性:

this.state={
msg:"你好啊",
name:"wdg",
age:18
}

现在我希望实现在我点击按钮的时候,可以修改name 的值:

我们可以使用this.setState({}) 这个实例方法,比如:

export default class BindEvent extends React.Component{

constructor(){
super()
this.state={
msg:"你好啊",
name:"wdg",
age:18
}
}
render(){
return <div>
<p>BindEvent 组件</p>
<hr />
<button onClick={()=>{this.show('Hello world')}}>按钮</button>
<p>{this.state.msg}</p>
</div>
}

btnClickFunc(){
console.log("22222222222");
}

show(msg){
this.setState({
msg:msg
})
}

}

React 项目----setState 方法修改 state (16)_state

 从上面的例子我们可以看到的是当我点击按钮的时候,会调用show 这个方法,在show方法中我们接手一个参数,这个参数值赋值给this.state.msg 我们是通过this.setSate 这个方法完成赋值的

React 项目----setState 方法修改 state (16)_赋值_02

果不其然,在我点击按钮之后,this.state.msg 被重新赋值为了 “Hello World”

注意点

1.在上面show方法中,我们调用this.setSate 仅仅是对msg 赋值,并没有涉及到其他的属性,那么一开始初始化的name,age这些属性还有吗,会变化吗

答案是:其他的属性还会存在,并且不变

2.setState 这个方法的执行是异步的,如果大家在调用了this.setState之后,想要拿到最新的state 的值,需要调用 this.setState({},function(){

})

show(msg){
this.setState({
msg:msg
},function(){
console.log(this.state.msg);
})
}

上面我们是使用this.setState 方法 对实例属性this.state 进行了修改,演示了如何使用setState这个方法,并且提出了两个需要注意点

希望对你有所帮助!

 

举报

相关推荐

0 条评论