vue通过BroadcastChannel实现不同标签页直接传递消息

crossTagMsg.js

复制代码
const channel = new BroadcastChannel('demo');

export function sendMsg(type, content){
    channel.postMessage({
        type,
        content,
    });
}

export function listenMsg(callback){
    const handler = (e) => {
        callback && callback(e.data);
    }
    channel.addEventListener('message', handler);
    return() => {
        channel.removeEventListener('message', handler);
    };
}

A.vue发送消息页面

复制代码
import {listenMsg} from '@/utils/crossTagMsg'

function update(){
	sendMsg("更新", "dddd")
}

B.vue监听消息页面

复制代码
import {listenMsg} from '@/utils/crossTagMsg'

//监听消息
const cancelListen = listenMsg((msgInfo) => {
  console.log('监听到了更新', msgInfo)
})
//组件销毁时移除监听
onBeforeUnmount(cancelListen);
相关推荐
我就是马云飞10 小时前
大专毕业两年,我如何进入大厂,并逆袭八年的技术与认知成长
前端·程序员·全栈
小陈工10 小时前
Python Web开发入门(十六):前后端分离架构设计——从“各自为政”到“高效协同”
开发语言·前端·数据库·人工智能·python
欣然~10 小时前
FachuanHybridSystem 项目 Windows 完整安装启动文档
前端
anyup10 小时前
uView Pro 的主题系统有多强大?3 分钟设计 uni-app 企业级 UI 主题
前端·vue.js·uni-app
BUG_Jia10 小时前
Vue 3 组件封装与使用:保姆级教程
前端·javascript·vue.js
奇舞精选10 小时前
观察 AIRI 源码:一个 Agent 系统如何处理入口、扩展与执行闭环
前端·openai
思成Codes10 小时前
从本质看:Vue3 为什么运用 LIS 算法
javascript·vue.js
江湖行骗老中医10 小时前
Pinia 是 Vue 的专属状态管理库
前端·javascript·vue.js
用户693717500138410 小时前
Android 开发,别只钻技术一亩三分地,也该学点“广度”了
android·前端·后端
郑鱼咚10 小时前
别再神化Spec了,它可能只是AI Coding的临时补丁
前端