vue定时请求改变单页数据的内存地址问题

业务场景1

我们需要做一个数据列表页面,需要让他每8秒进行一次更新

存在问题及如何解决

1、直接写定时任务,赋值给list(列表数据保存的对象),会直接破坏vue对象(其实是内存地址被破坏)
1、
2、我们可以直接打印查看(注意看最后第二个打印有__ob__:Observer)
在这里插入图片描述在这里插入图片描述
我们直接 this.list=response会破坏vue对象其实说白了就是破坏了内存的地址(此地址非彼地址)
出现的问题就是数据不能双向绑定(地址都不一样了肯定就不能双向绑定了)
在这里插入图片描述
上图,我们通过调试工具发现改变了data里面的值,视图层的值是不会改变的,其实就是破坏了内存地址
如何解决
Object.assign(&result, value) 这样会比较好理解吧,保留内存地址
代码这么写
在这里插入图片描述

业务场景2

我们接着上面业务场景1加上:我们需要做一个数据列表页面,需要让他每8秒进行一次更新(还带条件搜索)

存在问题及如何解决

在未点击搜索时,填写相关条件是会缓存到条件对象里面的,当没有点击搜索,而每8秒的定时任务就把条件带过去了,这样造成带回来的数据和当前列表数据完全不一样,当然也就会渲染出错
在这里插入图片描述
解决思路:我们可以将条件拷贝下来,每8秒请求使用的条件就是拷贝的条件,而拷贝的条件是让他点搜索再更新。
拷贝就存在有深拷贝与浅拷贝之分
说明:浅拷贝
this.CachelistQuery= this.listQuery 这样 this.listQuery去改变 其实this.CachelistQuery也会改变(共享同一个内存地址所到账) 所以不能用浅拷贝来拷贝条件,因为我们改条件其实拷贝也会变(我们目的是点搜索才会改变)
深拷贝(点击搜索执行)
在这里插入图片描述
定时任务在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值