Vue.js Наблюдатель за данными хранилища

#javascript #vue.js #vuejs2 #vue-component

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

Вопрос:

В моем Vue.js У меня есть функция, которая получает метки из изображения с помощью Google Vision. Эта функция находится внутри mixin , поэтому мой код не такой раздутый.

Затем я сохраняю метки в виде массива в storeState , чтобы я мог получить к нему доступ в других компонентах.

Я хочу вызвать другую функцию, как только мой массив будет сохранен. Итак, я внедрил наблюдателя:

 watch: {
    this.storeState.labels: function () {
      anotheFunction()
      } 
    } 
  

Но я получаю Unexpected keyword 'this' ошибку. Итак, как я могу запустить другую функцию, как только мой this.storeState.labels будет обновлен?

Ответ №1:

Следите за этим свойством без использования this ключевого слова :

 watch: {
    "storeState.labels": function () {
      anotheFunction()
      } 
    } 
  

Ответ №2:

Сначала вам нужно создать вычисляемое свойство, а затем просмотреть это вычисляемое свойство, чтобы выполнить свои операции при изменении

 computed:{
    labels(){
       return this.storeState.labels; // did you mean return this.$store.state.labels ?
    }
},

watch:{
    labels:{
       handler:function(){
                anotherFunction()     
               }
        
    }
}
  

Ответ №3:

У вас есть 2 способа сделать это. Сначала используется синтаксис кавычек.

 watch: {
  'storeState.labels'() {
     // Do your magic here..
  }
}
  

и второй способ заключается в том, чтобы внимательно следить за объектом.

 watch: {
  storeState: {
     deep: true,
     handler() {
       // Do your magic here
       // This way watches all your object changes so then while using this be sure that you're doing right magic
     }
  }
}
  

Кроме того, в обоих случаях у вас должно быть вычисленное значение для использования storeState объекта на стороне Vue.