当前位置: 首页 > news >正文

react中修改state中的值无效?


// 初始化state
state = {personArr:[{name:'张三',id:1},{name:'李四',id:2},{name:'王五',id:3}]
}componentDidMount(){const newName = '赵六'const indexUpdate = 1const newArr = this.state.personArr.map((item,index)=>{if(indexUpdate === index){return {...item,name:newName}}else{return {...item}}})this.setState({personArr:newArr})console.log('personArr',this.state.personArr)
}

打印的值: 

问题来了,明明已经修改过了,为什么拿不到值呢,原来是setState的执行机制导致的,setState是作为异步来执行的,打印是同步的,因此拿不到值

解决: 要想获取更新后的值,只需在setState第二个参数中获取即可

this.setState({personArr:newArr
},()=>{console.log('personArr',this.state.personArr)
})

 打印结果:

 完美解决!

http://www.lryc.cn/news/305722.html

相关文章:

  • 在Node.js中如何实现用户身份验证和授权
  • QT day2 2.21
  • 说说设备像素、css像素、设备独立像素、dpr、ppi 之间的区别
  • 文生视频Sora
  • 汽车常识网:电脑主机如何算功率的计算方法?
  • c语言常见操作符及操作符优先级
  • IO进程线程:通信
  • 神经网络系列---常用梯度下降算法
  • Flink 的历史版本特性介绍(一)
  • 【尚硅谷】MybatisPlus 学习笔记(下)
  • 408数据结构算法模板
  • Mysql--索引分类
  • AutoTimes:通过大语言模型的自回归时间序列预测器
  • 记录 | go与C/C++交互
  • B3623枚举排列
  • vuex怎么防止数据刷新丢失?
  • OpenGL ES 渲染 NV21、NV12、I420、YV12、YUYV、UYVY、I444(建议收藏)
  • 云计算的两地三中心和灾备介绍
  • Spring Bean
  • Linux的时间操作
  • 2024-02-21 作业
  • 平台组成-监控服务
  • 探索分布式强一致性奥秘:Paxos共识算法的精妙之旅
  • 使用 ES|QL 优化可观察性:简化 Kubernetes 和 OTel 的 SRE 操作和问题解决
  • Docker 第十九章 : 阿里云个人镜像仓使用
  • 二、系统知识笔记-系统架构概述
  • 【高德地图】Android高德地图绘制标记点Marker
  • 每天一个知识点 - 如何快速熟悉后端项目
  • 如何将cocos2d-x js打包部署到ios上 Mac M1系统
  • pdffactory pro 8中文破解版