test
test

Reputation: 305

Vue vuex state watch is not working on first load

I have below code to get new ID using watch. Its working fine. However, I need the function to get the ID on first load as well, which is not working. Is there anything I am missing in my code?


watch: {
    id: {
      immediate: true,
      handler(newV, oldV) {
        this.id = newV;
      },
    },

  },
   mounted () {
    store.watch(store.getters.getId, id => {
      this.id = id;
    });
  },
  created() {
    this.userID();  
  },
  methods: {
      userID () {
         console.log('this.id);
      }
  }
}

Upvotes: 0

Views: 2036

Answers (1)

Steven Spungin
Steven Spungin

Reputation: 29081

You can just do this:

data() {
  return {id: null}
}
watch: {
    '$store.getters.getId': {
      immediate: true,
      handler: function(newV) {
        this.id = newV
      },
    },
  }

Using a computed property is better, as your component does not 'own the id'.

computed: {
    id() {
      return this.$store.getters.getId
    },
  },

Upvotes: 2

Related Questions