vuex 如何监听页面状态的变化?

1.在A页面修改了Vuex中状态。需要在B页面实时进行监听。
2.如何实现?

阅读 20.1k
6 个回答

由于 Vuex 的状态存储本来就是响应式的,从 store 实例中读取状态最简单的方法,就是在计算属性中返回某个状态。

B 页面引入以下代码:

computed: {
    myValue() {
        return this.$store.state.someValue
    }
}

此时,当 A 页面通过某种方式更改了 this.$store.state.someValue 的值,B 页面myValue 的值便会自动得到更新。

如果题主所指的监听,是要在这个值变化后触发其他动作,则需要在 B 页面加入侦听属性:

watch: {
    myValue: function(newVal, oldVal) {
        //其他业务代码
    }
}
  computed: {
    isOpened() {
      return this.$store.getters.sidebar.opened;
    },
  },

监听getters.sidebar.opened

把要监听的值 赋给一个变量然后在watch中 监听

import { mapGetters } from 'vuex' 

 computed: {
      ...mapGetters({
          auth: 'auth'
      })
    },
    watch: {
      auth: function(val,oldVal){
      //业务代码
    },

直接在watch里监控store

watch: {
    '$store.state. someValue': function () {
      // 业务逻辑
    },
  },
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏