为了账号安全,请及时绑定邮箱和手机立即绑定

Vue对象中的计算值函数被触发

Vue对象中的计算值函数被触发

慕容森 2021-03-29 17:16:36
我有一个包含computed属性的Vue对象。在该mounted函数中,有一个我设置了侦听器的事件。当我正在侦听的事件被触发时,将调用计算属性的函数,但该函数将在事件处理程序开始其处理之前被调用。对象中对计算属性的唯一其他引用是观察者。调用堆栈仅在调用计算出的属性之前显示vue.js进程。据我所知,计算属性所依赖的值都没有更改。new Vue({el: '#element',data: {    info: [],},computed: {    compVal: function () {        .        .        .    },    d},watch: {    compVal: function (dataSet) {        .        .        .    }},mounted: function () {    var vm = this;    window.addEventListener("datachange", function (e) {        vm.info = e.newInfo;    });}})有人可以帮我弄清楚为什么要调用它,以便我可以阻止它吗?还是至少可以帮助我确定没有相关值在变化,所以我可以从中早返回而不是完成功能?
查看完整描述

2 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

我真的想通了。

事件传递的对象之一是对触发事件的代码所保存的对象的引用,而不是副本。首次加载页面时,发送了具有默认值的初始事件。当Vue对象存储这些值时,它正在获取引用。当事件的源(在表单元素上具有域的另一个Vue对象)更改其对象副本时,它会自动触发主Vue对象对该对象的引用中的更改,并导致对属性进行求值。

在将对象传递到事件之前对其进行深层克隆即可解决该问题。


查看完整回答
反对 回复 2021-04-08
  • 2 回答
  • 0 关注
  • 290 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信