【问题标题】:Why Vue watch doesnt work in case with raw object but works from function为什么 Vue watch 在原始对象的情况下不起作用,但在函数中起作用
【发布时间】:2022-12-01 09:47:44
【问题描述】:

我目前正在使用 vuetify v-tabs 开发页面。 我正在使用动态创建页面并使用 v-bind 传递道具 当我将监视其中一个道具(selectedTab)添加到动态创建的组件时,我注意到了奇怪的行为。如果我传递这样的道具,手表不会检测到道具的变化:

props = { mboDetails: this.mboDetails, selectedTab:this.selectedTab }

v-bind="tab.props"

但是相反,如果我像这样传递我的道具:

    getTabProps(tabName: string) {
    if (tabName == 'TOTAL WEIGHT')
        return { selectedTab: this.selectedTab, mboDetailsGoalList: 
    this.mboDetailsGoalList };
    else if (tabName === 'MBO')
        return { mboDetails: this.mboDetails };
    }

    v-bind="getTabProps(tab.name)"

一切正常,有人可以解释我的行为吗?

【问题讨论】:

  • 将对象作为回调传递给手表。例如将 watch(rawObj, callback) 转换为 watch(() => rawObj, callback)
  • @kanuos 问题是为什么,而不是,你的方法不起作用
  • doc 指定 getter 部分

标签: vue.js vuejs2 vue-reactivity watchers


【解决方案1】:

您是否设置了带有深旗的观察者?

https://vuejs.org/guide/essentials/watchers.html#deep-watchers

可能是对象本身的引用没有发生变化,但是没有跟踪其中的元素以进行更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 2015-05-26
    • 2020-07-17
    • 2013-11-28
    相关资源
    最近更新 更多