首页 > 解决方案 > Vue prop watch 在类样式组件中不起作用

问题描述

我有一个名为 masterDatasourceId 的属性,如下所示,我是从 ajax 调用中的父组件传递的。

但是 watch 方法没有被调用。以下是我的代码。

  @Prop()
  masterDatasourceId!: number;

  @Watch('masterDatasourceId')
  masterDatasourceIdChanged(newVal: number) {
    // Even though masterDatasourceId changes, it is not coming up here.
  }

我在这里缺少什么?我正在使用基于类样式的打字稿的 vue 组件。

我想使用以下 getter setter 方法来获取它。

  private _masterDatasourceId!: number;
  public get masterDatasourceId(): number {
    return this._masterDatasourceId;
  }

  @Prop()
  public set masterDatasourceId(value: number) {
    console.log('this I wanted to use as a watcher if possible...!!!')
    this._masterDatasourceId=value;
  }

但它给出了以下运行时错误。

The computed property "masterDatasourceId" is already defined as a prop.

标签: typescriptvue.jsvue-component

解决方案


似乎需要立即为真。在此更改后工作

@Watch('masterDatasourceId', { immediate: true })
  masterDatasourceIdChanged(newVal: number) {
}

推荐阅读