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})}}
从上面的例子我们可以看到的是当我点击按钮的时候,会调用show 这个方法,在show方法中我们接手一个参数,这个参数值赋值给this.state.msg 我们是通过this.setSate 这个方法完成赋值的
果不其然,在我点击按钮之后,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这个方法,并且提出了两个需要注意点
希望对你有所帮助!
React 项目----setState 方法修改 state (16)相关推荐
- [react] componentWillUpdate可以直接修改state的值吗
[react] componentWillUpdate可以直接修改state的值吗 1: 不行,这样会导致无限循环报错. 2:在react中直接修改state,render函数不会重新执行渲染,应使用 ...
- React中setState方法详解
一.为什么要使用 setState 方法,如何用? 在 React 中,组件分为 有状态组件 和 无状态组件,有状态组件就是能够定义 state 的组件,比如类组件,无状态组件反之,比如函数组件.st ...
- [react] React为什么不要直接修改state?如果想修改怎么做?
[react] React为什么不要直接修改state?如果想修改怎么做? 有时表现出异步,有时表现出同步 1:在合成事件和钩子函数当中是异步的,在原生事件和setTimeout当中是同步的 2:异步 ...
- react项目服务器Tomcat,tomcat部署react项目的方法
tomcat部署react项目的方法 发布时间:2020-12-16 09:44:42 来源:亿速云 阅读:151 作者:小新 这篇文章主要介绍了tomcat部署react项目的方法,具有一定借鉴价值 ...
- React学习(6)-React中组件的数据-state
前言 组件中的state具体是什么?怎么更改state的数据? setState函数分别接收对象以及函数有什么区别? 如何划分组件的状态数据,进行自我的灵魂拷问,以及props与state的灵魂对比 ...
- React学习(六)-React中组件的数据-state
虽互不曾谋面,但希望能和你成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 撰文 | 川川 ID:suibichuanji 点击下方 ...
- react项目中的参数解构_一天入门React学习心得
一天入门React学习心得 阅读前必读 本文写的仓促,算是一个学习笔记吧,算是一个入门级的学习文章.如果你刚刚入门,那么可能一些入门的视频可能更加适合你.但如果具备一些知识,比如Vue,那么视频就不适 ...
- React项目经验总结
目录 1.报错 xxx.map is not a function 2.如何将后端返回的二进制流转换为base64格式的展示? 3.下载 4.父组件如何把值传给子组件?子组件又如何接收? 5.父组件如 ...
- react使用setState注意事项
React设计setState方法就是为了重新渲染页面 看看下面的代码实现的结果: state = {value : 0 }function test() {this.setState({ value ...
最新文章
- 汽车加油c语言作业,算法作业—汽车加油问题
- 区块链行业级应用服务商识数信科获千万元天使轮融资...
- 7-2 数组循环左移(20分)(顺序表实现)
- 将gcc/g++链接到指定版本
- 欧几里得算法及扩展欧几里得算法简单解释
- arcmap创建空间索引_ArcGIS ArcMap编辑教程-创建新的点要素
- Flex4序列号 adobe flash builder 4 序列号
- PMP课程学习第五天
- 网页点击链接,跳转qq添加好友
- Win 10系统怎么确认是否打开了虚拟化
- Python 计算两点之间的距离
- 学好数据结构的重要性
- 微信如何直接下载apk,实现微信点击超链接自动下载APP
- 网付扫码点餐新福利,消费者点餐可获微信支付金币奖励
- Minimum supported Gradle version is 6.1.1. Current version is 5.4.1.
- json解析与XML解析
- PS如何快速简单的给人像美白
- 1000000转万 js_javascript将数字转换整数金额大写的方法
- SAP生产订单删除步骤
- 使用c语言判断是闰年还是平年