react中this.setState踩坑史

使用react中this.setState踩坑史@react

先介绍react中的state

简单来说,state就是我们在全局需要用到的一些数据的的声明以及值得初始化的地方,在state中声明过的属性,都可以全局使用它。(肤浅来说,本人觉得它和vue中data的作用有异曲同工之处)。还有就是state是可变的,它是用来反映组件状态的变化的,比如一个按钮,你点击了它之后,它所带来的影响就要通过state中的一些属性来具体实现。
使用state中的数据需要this.state.visible(你想使用的属性)

改变state中的属性的属性值 this.setState({})

我们先想一下Vue中改变data的属性值,就是通过一个方法触发,然后在方法中改变,看下图
在这里插入图片描述
但是在react中就是需要来调用一步this.setState,看下图
在这里插入图片描述

重点来了!!!为什么没有改变state中的值,因为setState就相当于是一个异步操作,不能立即被修改
解决方法有以下几种:
第一种:使用一个回调函数来解决异步问题,
在这里插入图片描述这种方式虽然可以解决问题,但是它也相当于直接修改了,所以我不推荐这种方法。

第二种,使用promise的语法糖async…await来变异步为同步
在这里插入图片描述这种方法是我用的最多的而且也比较推荐大家用的。
由于本人能力有限,经常用的就这两种方法,当然还有其他更好的方法存在。

拓展部分

就是关于setState还有第二种格式,它接收一个回调函数,而不是一个对象,这个回调函数有两个参数,第一个是接收前的一个状态值,然后第二个时更新后的值

在这里插入图片描述这个方法在处理逻辑比较复杂的情况下是非常好用滴!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值