@camradee

Как во vue watch отслеживать состоние двух computed свойств через логичесвое И?

То есть имеется свойство А и Б, надо чтобы watch сработал когда поменяется и А и Б. Если встроенной возможности такой нет то как бы можно было это обойти?
  • Вопрос задан
  • 401 просмотр
Решения вопроса 1
@camradee Автор вопроса
В итоге как сделал. Добавил 2 переменные состояния и объединил 2 свойства в одно compoundAB:
data () {
    return {
      stateAChanged: false,
      stateBChanged: false
    }
  },
  computed: {
    getA () {
     ....
    },
    getB () {
     ....
    },
    compoundAB() {
      return `${this.getA}|${JSON.stringify(this.getB)}`
    }
  }

Свойство B подразумевается в виде объекта. Watch сверяет переменные состояние и если true выполняется
watch: {
    compoundAB: function (newVal, oldVal) {
      const [oldA , oldB ] = oldVal.split('|');
      const [newA, newB] = newVal.split('|');

      if (oldA !== newA) {
        this.stateAChanged = true
      }
      if (oldB !== newB) {
        this.stateBChanged = true
      }
      if (this.stateAChanged && this.stateBChanged) {
        this.stateAChanged = this.stateBChanged = false
      }
    }
  },
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Kozack
@Kozack Куратор тега Vue.js
Thinking about a11y
Внутрь watch вам передаются новые и старые значения ваших свойств. Просто проверяйте что оба новых значения не равно старым
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы