vue如何实现多窗口之间的响应式通信

在同一个项目中,有两个屏幕主屏幕(A)和副屏幕(B);目前需求就是A的操作B能响应式的获取(并且后台不参与的情况),就像是Vue子组件之间使用Vuex;我使用了Vuex但是好像B无法响应式的获取A修改的state状态;然而我查到说可以使用PostMassage但是我没有操作出来;不知道是否还有其他办法或者PostMassage怎么才行得通

阅读 5.2k
2 个回答

问题描述模糊,屏幕(A)和屏幕(B)之间是什么关系,是父子关系,还是兄弟关系,还是没有关系(浏览器的两个标签)?
用页面描述比较好,如果页面A和页面B分属不同的vue实例,那使用vuex肯定是相应不到的,因为vuex实例也是分属不同的vuex,你可以理解为页面A和页面B运行环境都不一样(不同进程间怎么通信?)
而PostMassage可以实现窗口间(iframe)的数据通信,但是也是属于浏览器中的一个标签(同一个进程,top的windows是一个)
如果是浏览器的两个标签(两个进程)那就只能借助后台进行了

Vuex 的调用方式?
恩 ... 你这样的描述比较空洞

常见的方式譬如这样:

// store/index.js
state = { user: "123" };
mutations = { setUser(state, data){ state.user = data } };

// Page: A,
    事件回调:
        // 更新 state 的信息
        setUser()

// Page: B,
    watch:{
        user(newVal){ ... },
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题