【问题标题】:How to track deep changes in computed object with watcher如何使用观察者跟踪计算对象的深层变化
【发布时间】:2020-07-16 19:07:37
【问题描述】:

我似乎难以跟踪组件内计算对象的深层变化。

我有一个计算的计划对象定义为:

    computed: {
        schedule() { // return the current schedule object
            return this.$store.getters['schedules/getScheduleByName'](this.picked)
        }
    },

我定义了一块手表:

    watch: {
        schedule: {
            handler() {
                this.activeColor = 'blue' // this is stored in the data function
            },
            deep: true,
        },
    },

这确实会跟踪变化。但是,因为调度程序对象似乎会随着组件加载而发生变化,所以颜色变化会立即发生,而不是在我手动更改对象属性之后发生。有谁知道如何实现颜色最初为红色然后在组件完全初始化后更改的效果?

提前谢谢你,

马丁

【问题讨论】:

  • 为什么不把它放在一个方法中,在mounted() 挂钩中调用?
  • 谢谢,你的意思是设置挂载钩子的颜色吗?我试图这样做,但它仍然被覆盖并且颜色是蓝色的。

标签: vue.js


【解决方案1】:

最简单的方法是在您的数据中保留一个标志,在您手动更改计划时设置它。然后在您的手表中,在更改颜色之前检查是否设置了标志。

【讨论】:

  • 嗨,我最终在数据中添加了一个计数器,该计数器在更改时递增。当它将计数器增量加载到 1 并且没有对样式应用任何更改时,任何后续更改都意味着计数器 > 1 并且会发生样式更改。我不知道如何设置标志,以便在页面加载时发生自动更改时它不会改变。
  • @MartynW 这也是处理它的好方法。很高兴知道您的问题已解决^_^
猜你喜欢
  • 2018-07-12
  • 1970-01-01
  • 2017-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 2015-07-19
相关资源
最近更新 更多