在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)相关推荐

  1. [react] componentWillUpdate可以直接修改state的值吗

    [react] componentWillUpdate可以直接修改state的值吗 1: 不行,这样会导致无限循环报错. 2:在react中直接修改state,render函数不会重新执行渲染,应使用 ...

  2. React中setState方法详解

    一.为什么要使用 setState 方法,如何用? 在 React 中,组件分为 有状态组件 和 无状态组件,有状态组件就是能够定义 state 的组件,比如类组件,无状态组件反之,比如函数组件.st ...

  3. [react] React为什么不要直接修改state?如果想修改怎么做?

    [react] React为什么不要直接修改state?如果想修改怎么做? 有时表现出异步,有时表现出同步 1:在合成事件和钩子函数当中是异步的,在原生事件和setTimeout当中是同步的 2:异步 ...

  4. react项目服务器Tomcat,tomcat部署react项目的方法

    tomcat部署react项目的方法 发布时间:2020-12-16 09:44:42 来源:亿速云 阅读:151 作者:小新 这篇文章主要介绍了tomcat部署react项目的方法,具有一定借鉴价值 ...

  5. React学习(6)-React中组件的数据-state

    前言 组件中的state具体是什么?怎么更改state的数据? setState函数分别接收对象以及函数有什么区别? 如何划分组件的状态数据,进行自我的灵魂拷问,以及props与state的灵魂对比 ...

  6. React学习(六)-React中组件的数据-state

    虽互不曾谋面,但希望能和你成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 撰文 | 川川 ID:suibichuanji 点击下方 ...

  7. react项目中的参数解构_一天入门React学习心得

    一天入门React学习心得 阅读前必读 本文写的仓促,算是一个学习笔记吧,算是一个入门级的学习文章.如果你刚刚入门,那么可能一些入门的视频可能更加适合你.但如果具备一些知识,比如Vue,那么视频就不适 ...

  8. React项目经验总结

    目录 1.报错 xxx.map is not a function 2.如何将后端返回的二进制流转换为base64格式的展示? 3.下载 4.父组件如何把值传给子组件?子组件又如何接收? 5.父组件如 ...

  9. react使用setState注意事项

    React设计setState方法就是为了重新渲染页面 看看下面的代码实现的结果: state = {value : 0 }function test() {this.setState({ value ...

最新文章

  1. 汽车加油c语言作业,算法作业—汽车加油问题
  2. 区块链行业级应用服务商识数信科获千万元天使轮融资...
  3. 7-2 数组循环左移(20分)(顺序表实现)
  4. 将gcc/g++链接到指定版本
  5. 欧几里得算法及扩展欧几里得算法简单解释
  6. arcmap创建空间索引_ArcGIS ArcMap编辑教程-创建新的点要素
  7. Flex4序列号 adobe flash builder 4 序列号
  8. PMP课程学习第五天
  9. 网页点击链接,跳转qq添加好友
  10. Win 10系统怎么确认是否打开了虚拟化
  11. Python 计算两点之间的距离
  12. 学好数据结构的重要性
  13. 微信如何直接下载apk,实现微信点击超链接自动下载APP
  14. 网付扫码点餐新福利,消费者点餐可获微信支付金币奖励
  15. Minimum supported Gradle version is 6.1.1. Current version is 5.4.1.
  16. json解析与XML解析
  17. PS如何快速简单的给人像美白
  18. 1000000转万 js_javascript将数字转换整数金额大写的方法
  19. SAP生产订单删除步骤
  20. 使用c语言判断是闰年还是平年

热门文章

  1. Oracle内核参数介绍
  2. web.xml 常用标签配置(转)
  3. Centos5.5完整安装Cacti+Spine
  4. 服务器管理神器 开源堡垒机 jumpserver 实战教程
  5. 文字识别技术在内容安全中的应用
  6. 高手过招, 为什么 Redis Cluster 是16384个槽位?
  7. 如何搭建一个拖垮公司的技术架构?
  8. 128G小米CC9e手机,免费送!真事!
  9. 技术架构委员需要关注哪些问题
  10. 控制~Control System 线性系统