vue 监听 sessionStorage 的变化

发布时间 2023-03-22 21:09:26作者: 龙卷风吹毁停车场
原文链接:https://blog.csdn.net/weixin_41192489/article/details/125069656
将 sessionStorage 的变化注册为全局事件 setItem,在main.js中添加如下代码
Vue.prototype.setSessionItem = function (key, newVal) {
  // 创建 StorageEvent 事件
  let newStorageEvent = document.createEvent("StorageEvent");
  const storage = {
    setItem: function (k, val) {
      sessionStorage.setItem(k, val);

      // 初始化 StorageEvent 事件
      newStorageEvent.initStorageEvent(
        "setItem", // 事件别名
        false,
        false,
        k,
        null,
        val,
        null,
        null
      );

      // 派发事件
      window.dispatchEvent(newStorageEvent);
    },
  };
  return storage.setItem(key, newVal);
};
mounted() {
    // 添加对 sessionStorage 的监听
    window.addEventListener("setItem", () => {
      this.role = sessionStorage.getItem("role");
    });
  },