Vue进行深度侦听时,如何解决新旧值一样的问题?

news/2024/7/9 23:52:09 标签: vue, javascript, html, 前端

Vue在进行数值/对象等复杂数据类型的深度侦听时,如果不稍加处理,深度侦听的新旧值会一模一样,影响有些业务的处理。
在上一篇博客中我已经把场景阐述清楚了,这期就只写处理办法,沿用上期代码。
只需要添加一个计算属性即可。

html"><div id="app">
    <h3>{{computedObj}}</h3>
    <button @click='obj[0].name = "CreatorRay" '>改变</button>
</div>
html" title=javascript>javascript">  <script>
        var app = new Vue({
            el:'#app',
            data:{
                obj:[{name:'Ray'}]
            },
            computed: {
                computedObj:function(){
                    return this.obj[0].name;
                }
            },
            watch:{
                'computedObj':{
                    deep:true,
                    handler(newV,oldV){
                        console.log('newV',newV);
                        console.log('oldV',oldV);
                        
                    },

                }
            }
        });
    </script>

在这里插入图片描述
只是给大家提供一个解决的办法,确实在有些场景下必须用到旧值进行一些处理。
如果不是一定要用的旧值,不要随便这样处理,这样会强行破坏原型链,而且多添加一步计算属性也会影响性能。

没看懂干嘛的可以看一下上期的博客,上期留了一个小问题,因为篇幅较长了,就单独发了一期解决办法。

有微信小程序课设、毕设需求联系个人QQ:505417246

关注下面微信公众号,可以领取微信小程序、Vue、TypeScript、前端、uni-app、全栈、Nodejs、Python等实战学习资料
最新最全的前端知识总结和项目源码都会第一时间发布到微信公众号,请大家多多关注,谢谢!

在这里插入图片描述


http://www.niftyadmin.cn/n/1576605.html

相关文章

Vue知识点总结(7)——计算属性computed(超级详细)

这期的主题是Vue的计算属性computed。 我们都知道插值表达式{{}}&#xff0c;{{}}可以实现双向的数据绑定&#xff0c;并且可以在其中进行一些常规的算数运算和逻辑运算。 但是模板内的表达式非常便利&#xff0c;但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会…

NUC1019 数素数【素数筛选法】

数素数 时间限制: 1000ms 内存限制: 65536KB 问题描述素数是的只能被1和它本身整除的自然数。判断一个数是素数的方法是使用2到该数的平方根的素数除它&#xff0c;若有能整除的则该数不是素数。输入描述本题有多组数据&#xff0c;每组数据由两个正整数M,N组成。&#xff08; …

Vue知识点总结(8)——filter过滤器(超级详细)

Vue.js 允许你自定义过滤器&#xff0c;可被用于一些常见的文本格式化。过滤器可以用在两个地方&#xff1a;双花括号插值和 v-bind 表达式 (后者从 2.1.0 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部&#xff0c;由“管道”符号指示。 Vue为我们提供了两种过滤器的…

微信小程序云开发实现分页功能(简单易懂)

我们在页面上进行数据展示的时候&#xff0c;无论是pc端还是移动端&#xff0c;很多情况下需要展示很多很多条的数据。 比如商城&#xff0c;商品的数量是非常多的。但是在我们从后台获取数据的时候&#xff0c;数据的传输数量总是有限制的&#xff0c;这也是为了性能考虑&…

Vue知识点总结(9)——局部组件的创建和使用(超级详细)

为什么要组件化开发&#xff1f; 有时候页面代码量太大&#xff0c;逻辑太多或者同一个功能组件在许多页面均有使用&#xff0c;维护起来相当复杂&#xff0c;这个时候&#xff0c;就需要组件化开发来进行功能拆分、组件封装&#xff0c;已达到组件通用性&#xff0c;增强代码可…

JS如何删除数组中指定的内容

如何删除数组中的指定内容&#xff1f; 主要是对splice函数的应用&#xff0c;这个函数很强大&#xff0c;用处非常多。 我们分两种情况处理问题&#xff1a; ①删除数组中的一个指定元素。 array数组中只有一个值为1的元素&#xff0c;我们的任务就是删除这个值为1的元素。 va…

Activiti实战. 1.1什么是Activiti

1.1什么是Activiti 大家第一次接触Activiti的时候不理解它为什么要叫这个名字&#xff0c;从词典中也没有找到对它的解释。可能有人会想到另外一个单词Activity&#xff08;活动&#xff09;&#xff0c;与Activiti仅一个字母之差。在工作流方面有些基础的读者或许能很快理解&a…

Vue知识点总结(10)——全局组件的创建和使用(超级详细)

在上一期我们已经讲解了组件的概念和作用&#xff0c;还有局部组件的封装、挂载和使用。 这期我们说一下全局组件的创建和使用&#xff0c;很简单。 <div id"app"><Vheader></Vheader> </div><script>Vue.component(Vheader,{data ()…