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

文章描述了一位开发者在Vue应用中遇到的问题,即从A页面打开的B页面表单提交后,如何将数据传回A页面。尝试使用Vuex结合vuex-persistedstate、event-bus、localStorage监听以及postMessage等方法均未成功。最终,通过监听localStorage的变更实现了数据从B页面到A页面的传递。
摘要由CSDN通过智能技术生成

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);
      }
    });
  },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值