vue修改数据后,页面不重新进行渲染的问题(当点击其他页面元素会重新渲染数据)

问题

最近开发项目时,遇到一个非常特殊的问题(以前也遇到过但都用很多乱七八糟的方式解决了!),这个问题就是当我在methods的某一个方法中修改了页面v-for的数据时,本应该重新渲染的页面没有响应,还是维持老样子,当我点击页面上的其他组件时,页面才重新渲染出来。

给大家看一下就是下面这个效果。

在这里插入图片描述

下面这两个,是点击其他组件时又成功渲染出来的样子。

在这里插入图片描述
在这里插入图片描述

原因

这里说一个概念,在组件初始化的时候,对data中的某一个数组进行递归遍历,会对数组中数据的每一个属性进行劫持,添加set,get方法。我们后来新加的数据,并没有通过Object.defineProperty设置成响应式数据,修改后不会视图更新渲染。

这也是导致问题的根本原因,这里还有个原因是因为数据层次太多,没有触发render函数进行自动更新,所以才出现的第一次新增成功第二次新增失败。

解决

解决方法很简单,直接在你处理完的数据的方法中调用下面这个方法即可。

this.$forceUpdate();

下面是我加的位置,大家根据自己代码自行参考一下:
在这里插入图片描述

解决完成

在这里插入图片描述

喜欢的同学给个免费的点赞吧,Thanks♪(・ω・)ノ

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值