Vue Watcher и Vuex не работают должным образом - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть компонент, который обновляет состояние в Vuex, и я вижу через инструменты vue dev, что состояние vuex изменяется, однако, когда я пытаюсь выполнить некоторую логику, когда состояние изменяется через наблюдателей, привязанных к mapGetters или mapState, в Vuex это делаетне работает вообще.код из vuex:

import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);

export const store = new Vuex.Store({
  state: {
    companyDetails: {},
    //date: "",
    showSearchForm: false,   
    consumptionData: {
      dateTo: new Date(),
      dateFrom: new Date(new Date().setDate(new Date().getDate() - 7))
    }
  },
  getters: {
    getConsumptionData(state) {
      return state.consumptionData;
    }   
  },.....

Код для наблюдателя и вычисляемое свойство, которое получает данные из Vuex с помощью кода с комментариями MapState или MapGetters, означает, что я опробовал все эти параметры

  computed: {
    // need to ask about reactiveness
    // ...mapGetters({
    //   consumptionDataVuex: "getConsumptionData"
    // })
    //  ...mapState({
    //  consumptionDataVuex: "ConsumptionData"
    //  })    
    consumptionDataVuex () {
      return this.$store.getters.getConsumptionData;
    }
  },
    watch: {
    consumptionDataVuex() {
      console.log("changed");
      this.getConsumption();
    }
  },.....

это только код, который синхронно получает данные из vuex, это

  created() {
    //console.log(this.parentData);
this.$store.watch(
  (state)=>{
    return this.$store.state.consumptionData // could also put a Getter here
  },
  (newValue, oldValue)=>{
    //something changed do something
    console.log(oldValue)
    console.log(newValue)
    this.getConsumption();
  },
//Optional Deep if you need it
    {
      deep:true
    }
  )
  },

Итак, я не понимаю, почему приведенный выше код не может получать обновления из состояния, в то время как код в созданном Hook делает?Многие примеры в интернете доказывают, что это должно работать

1 Ответ

0 голосов
/ 17 декабря 2018

Попробуй сменить часы

    watch: {
        consumptionDataVuex: {
            handler () {
              console.log("changed");
              this.getConsumption();
            },
            deep: true
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...