vue中两个没有关系的页面如何通讯

A页面中的一个子组件 点击按钮跳转到B页面,B页面是在A页面窗口之上新开的窗口。B页面中是一个表单,提交后关闭B页面,同时A页面中要渲染B页面选择的数据。

尝试了以下办法:

  1. 使用vuex+vuex-persistedstate,B页面监听vuex中的数据,失败

  1. 使用event-bus,监听不到,失败

  1. 重写localStorage的setItem方法,window监听,失败

  1. 使用postMessage,依旧监听不到,失败

解决办法:使用原生js监听缓存

B页面存储数据

      localStorage.setItem('categoryData', JSON.stringify(this.selectedData));

A页面mounted中监听

  mounted() {
    window.addEventListener('storage', (event) => {
      if (event.key === 'categoryData') {
        console.log(JSON.parse(event.newValue));
        this.subjectData = JSON.parse(event.newValue);
      }
    });
  },

你可能感兴趣的:(vue,前端)