楼楼今日遇到个坑爹的问题。 就是 this.setStats({}) 对 this.stats 不更新问题

问题是这样的

 constructor(props) {super(props);this.state = {imageList: []}WechatService.getMaterialOrealList("image").then((result) => {this.setState({imageList: result})});}async handleInputChangeUpload(event) {var target = event.target;var file = target.files[0];var formData = new FormData();formData.append('file', file);var result = await WechatService.updateMaterialImage(formData);var lists = this.state.imageList;lists.push(result);console.log(lists);//同步更新this.setState((prevState, props) => ({imageList: lists}))}
复制代码

数组的长度已经变成了11可是 render 并没有更新!!,这是为什么呢? 此方法已经是谷歌出来的东西,可是好像并没有成功

 this.setState((prevState, props) => ({imageList: lists}))
复制代码

但是楼主看了一下elementsUI 的代码后进行一次修改后,发现一下方案倒是成功了。百思不得其解,不知道那位小兄弟可以解答一下。

constructor(props) {super(props);this.state = {//这是把数组用一个对象包含起来data: {imageList: []}}}componentWillMount() {WechatService.getMaterialOrealList("image").then((result) => {this.setState({data: Object.assign({}, {imageList: result})})});}handleUpload() {this.refs.inputFile.click();}async handleInputChangeUpload(event) {var target = event.target;var file = target.files[0];var formData = new FormData();formData.append('file', file);var result = await WechatService.updateMaterialImage(formData);var lists = this.state.data.imageList;lists.push(result);this.setState((prevState, props) => ({//浅拷贝、对象属性的合并data: Object.assign({}, { imageList: lists })}))setTimeout(() => {console.log(this.state.data);});}
复制代码

这样使用对象进行修改的数组变量反而更新了。

这是为什么呢? 无法解答

React setStats数组不更新,百思不得其解。相关推荐

  1. react 合并数组_React 常被忽视的细节。

    一. 数组循环时的key值 为了帮 React 实现 数组的最优调和(reconciliation)时,我们需要为循环的组件加上 key,不然React 会提示 : 然后为了图方便,很多人就会直接将 ...

  2. [Unity2018.2]ShaderGraph更新详解

    洪流学堂,让你快人几步!本文首发于洪流学堂微信公众号. 洪流学堂公众号回复节点,获取ShaderGraph节点详解PDF文件(带目录). ShaderGraph 2018.2 更新详解 在2018.1 ...

  3. 从一个表格render方法问题看React函数组件的更新

    从一个表格render方法问题看React函数组件的更新 最近在开发中碰到了一个现象觉得很有典型能作为例子所以给大家分享一下,从这个现象我们能很清楚的看到函数组件的更新的特点,以及我们应该如何去理解和 ...

  4. 25、react 中使用路由 router 详解

    react 中使用路由 router 详解 今天开始最新的一个模块,也是 react 开发中最重要的一部分,就是路由. SPA 理解 我们使用原生的 HTML + CSS + JavaScript 开 ...

  5. ES5和ES6数组遍历方法详解

    ES5和ES6数组遍历方法详解 在ES5中常用的10种数组遍历方法: 1.原始的for循环语句 2.Array.prototype.forEach数组对象内置方法 3.Array.prototype. ...

  6. 侍魂胧月传说服务器维护,侍魂胧月传说手游2021年6月2日停机维护更新详解

    在侍魂胧月传说手游中2021年6月2日更新了哪些有趣的内容呢?想了解2021年6月2日更新情况如何的话,接下来就让我们一起来看一下吧! 侍魂胧月传说手游2021年6月2日停机维护更新详解 <侍魂 ...

  7. 百思不得其解,一个钻石玩家可以短时间上王者?因为猎游?

    要不是亲身体验自己,也不会相信自己的段位,竟然可以短时间之内直接跨越星耀直接上王者,当然这里面就是连胜给我带来的福利,因为在游戏里面我不得不说,有一个强大的队友比什么都来得爽快,因为玩王者荣耀的时候我 ...

  8. 旋转排序数组系列题详解

    旋转排序数组系列题详解 文章目录 旋转排序数组系列题详解 一.问题描述:旋转数组的最小数字 二.分析:二分查找 三.代码 四.问题描述:寻找旋转排序数组中的最小值 五.分析:二分搜索 六.代码 七.问 ...

  9. fofa自动化爬虫脚本更新+详解

    fofa自动化爬虫脚本更新+详解 起因 最近要用到fofa爬虫,为什么要用爬虫不用api,问就是穷,想起来之前写过一个相关的脚本:Fofa-python-脚本,是很久以前写的了,之前写的时候有点问题, ...

最新文章

  1. 深入分析Java Web技术内幕pdf
  2. 苹果手机透明桌面_打开手机这个设置,桌面变全透明!
  3. PAT甲级 -- 1005 Spell It Right (20 分)
  4. 用纯CSS实现3D立方体效果
  5. 滴滴:女乘客性骚扰男司机一事属实 已对该乘客永久封禁
  6. 改键走a显示攻击距离_英雄联盟谁才是真正的走A怪?大神钟爱VN,新手都去玩复仇之矛!...
  7. 湘潭比赛有感---铩羽之行
  8. CodeForce 855B 暴力or线段树
  9. Openproj 在64位操作系统报错errno=193
  10. 电脑系统里如何设置dns服务器
  11. 包引入中,在包名前使用下划线“_”
  12. [渝粤教育] 北京师范大学 中国哲学 参考 资料
  13. 蹭热搜账号将受处罚?揭秘表层网络环境背后的危机
  14. vue基于file-saver处理二进制文件流,导出文件
  15. jupyter notebook的安装与启动
  16. 视频怎么转为GIF,如何制作GIF
  17. MySQL下载安装运行
  18. 电脑安装不了pr提示不满足系统要求怎么办?
  19. JS中怎样使用Date对象加减日期
  20. QUECTEL上海移远4G通讯CAT4模组EC20CEFAG模块串口调试指南之05【EC20模组TCP/IP模块AT指令说明】

热门文章

  1. LOJ #6052. 「雅礼集训 2017 Day11」DIV
  2. PAT A1149 Dangerous Goods Packaging (25 分)——set查找
  3. docker与jenkins学习
  4. Unity3D学习(五):实现一个简单的视觉感知
  5. [转]Installing Memcached on Windows
  6. if...else..的错误用法
  7. solaris11-text-安装GUI(gnome)
  8. 设计模式_01_单一原则
  9. video from html5
  10. 字符串搜索。HOJ1530 Compound Words。