Vue prop watch не работает в компоненте, стилизованном под класс

#typescript #vue.js #vue-component

#typescript #vue.js #vue-компонент

Вопрос:

У меня есть одно свойство с именем masterDatasourceId следующим образом, которое я передаю из родительского компонента в вызове ajax.

Но метод watch не вызывается. Ниже приведен мой код.

   @Prop()
  masterDatasourceId!: number;

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

Чего мне здесь не хватает? Я использую vue-компонент на основе typescript в стиле класса.

Я хотел получить его, используя следующий метод установки getter.

   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.
  

Ответ №1:

Кажется, для этого требуется немедленное значение true. Работает после этого изменения

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