当涉及到同时打开多个tab页,操作一个tab,希望其他的tab也会同时进行更新状态。就可以用下面的方法来处理
新建 crossTagMsg.js
新建 crossTagMsg.js,编写如下代码
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 
 | 
 
 
 
 
 
 
 
 export function sendMsg(type, payload) {
 localStorage.setItem('@@' + type, JSON.stringify({
 payload,
 temp: new Date().getTime(),
 }))
 }
 
 
 
 
 
 export function listenMsg(handler) {
 const storageHandler = e => {
 const data = JSON.parse(e.newValue)
 handler(e.key.substring(2), data.payload)
 }
 window.addEventListener('storage', storageHandler)
 }
 
 | 
如何使用
在新标签中点击确认新增或者编辑时,调用 sendMsg 方法,传递两个参数,一个是消息类型,一个是消息内容
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 
 | import {sendMsg} from "../utils/crossTagMsg";
 export default {
 name: "test",
 methods: {
 changeStorage() {
 sendMsg("add", {
 name: 123123,
 time: new Date().getTime()
 })
 }
 }
 }
 
 | 
在原标签的 mounted 函数中监听消息,可以根据 type 值来处理不同操作
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 
 | import {listenMsg} from "../utils/crossTagMsg";
 mounted()
 {
 listenMsg((type, payload) => {
 console.log(type)
 console.log(payload)
 if (type === 'add') {
 this.tabData.push(payload.name)
 }
 })
 }
 ,
 
 | 
实现效果
在右侧新增标签中点击添加按钮,左侧标签页面实时更新页面数据
