【vue】Vue数据发生改变但页面却没有实时更新

本文记录了解决Vue中数组数据修改但页面未更新的问题,通过使用this.$set方法实现监听并更新视图。重点探讨了数据变化未被监听及页面不更新的现象,以及$set方法的作用和原理。

问题的出现:

由于想实现用户的增加,将其数据保存在本地,结果问题就来了。。。。。这里写篇记录一下,帮助有用的人

问题:

在这里插入图片描述
点击这里的编辑,将编辑完的用户数据存到数组中,然后将这里的值传给子组件的props属性,然后el-table去渲染,但是值改变后页面没有更新。。。。。
这里给大家看看值:
在这里插入图片描述
在这里插入图片描述
然后我看到一篇博客,去尝试监听解决,但是监听写了,发现数据有的监听不到,有的就可以,最后找到了解决办法。
附上最后看到的博客:
他人博客1
他人博客2

解决办法:

用vue里的this.$set()方法,该方法是vue自带的可对数组和对象进行赋值,并触发监听的方法。直接将值修改,有三个参数
第一个参数为你要改变的数组或对象
第二个参数为下标,或者元素名称
第三个参数为新值
附上我改完之后的代码:

        this.studentInfo.forEach((item, index) => {
          if (item.id === this.updatedid) {
            this.$set(this.studentInfo, index, addinfo)
          }
        })

总结:

问题总算是解决了,但是搜博客时,其他博主写到数据改变但页面没更新出现的俩种错误现象:
1、watch或者computed监听到数据的变化但是页面却没有实时更新
2、没有监听到数据的变化
这里为什么会出现这种现象呢,值得我去深思,来防止以后再掉到这种坑中,在写完该项目之后,我会去好好看看this.$set方法,以及这个问题出现的原因!!!

花了一天的事件终于解决,真不容易,狗生艰难
在这里插入图片描述

最后希望能帮助到有此问题的朋友们,或者有啥问题,也可以关注我一下一起讨论,人多力量大,学习永无止境在这里插入图片描述

实现页面实时刷新有多种方法,不同的技术栈有不同的实现方式: ### Vue 实现页面刷新 在 Vue 中,可通过手动触发组件的重新渲染,实现更细粒度的刷新。使用 `key` 属性能强制组件重新渲染,示例代码如下: ```javascript export default { data() { return { componentKey: 0 }; }, methods: { refreshComponent() { this.componentKey += 1; } } } ``` 当调用 `refreshComponent` 方法时,`componentKey` 值改变Vue 会强制组件重新渲染,达到刷新效果[^1]。 ### Java 实现页面数据刷新 在 Java 里实现页面定时刷新实时数据,涉及如下代码: ```javascript __elementScript._functionCallback = typeof __functionCallback != "undefined" ? __functionCallback : new Function(); ``` 不过此代码只是一个函数回调的处理逻辑,要实现页面定时刷新实时数据,还需结合前端的定时请求和后端的数据接口来完成[^2]。 ### Spring Boot 集成 Thymeleaf 实现页面实时刷新 Spring Boot 集成 Thymeleaf 模板引擎可实现页面实时刷新。需在 HTML 标签后添加 `xmlns:th="http://www.thymeleaf.org"`,示例 HTML 文件如下: ```html <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div th:text="${data}">展示要显示的内容</div> <div th:text="${data}">展示要显示的内容</div> <div th:text="${data}">展示要显示的内容</div> <div th:text="${data}">展示要显示的内容</div> </body> </html> ``` 在 `controller` 类里返回相应的数据,Thymeleaf 会自动将数据渲染页面上,实现页面实时刷新[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值