watch监听不到vuex的数据

同一个项目,同时打开两个页面,一个页面往vuex改变参数(this.$store.commit('xxx',true)),另一个页面在watch监听这个值,为什么会监听不到呢。。。。

在监听vuex页面尝试过下面这种,还是接收不到数据:
computed: {

aa() {
  return this.$store.state.xxx
}

},
watch:{

aa(newVal){
    console.log(newVal)
}

}

阅读 11.4k
5 个回答
同一个项目,同时打开两个页面

这是指开了两个浏览器选项卡?

跨页面了,代码跑在不同的进程,彼此是隔离的啊.
你得上跨页面通信机制.方案很多.

  1. postMessage.
  2. 利用同域localstorage事件.

我通常使用第2点.操作localstorage时,已打开的同域页面都会收到storage事件.可以利用这一点进行通信.

要这么写

watch:{

'$store.state.xxx'(newVal){
    console.log(newVal)
}
}
  1. 使用computed读取vuex值;
  2. 再使用watch监听这个值;

vuex不是用来跨页的。另外,尽量不使用watch,vuex本来就自动响应了,有需要使用计算值computed

了解一下mapGetters,mapState的使用,vuex结合watch就是多此一举的行为vuex的State

import { mapGetters, mapState } from 'vuex'
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题