vue 对sessionStorage进行监听

2024-01-11  本文已影响0人  IssunRadiance
  1. 在main.js中给Vue.protorype注册一个全局方法。
    其中'lang'为我们想要监听的sessionStorage的key值
// 全局注册事件  监听session 变化
Vue.prototype.resetSetItem = function (key, newVal) {
  if (key === 'lang') {
    // 创建一个StorageEvent事件
    var newStorageEvent = document.createEvent('StorageEvent');
    const storage = {
      setItem: function (k, val) {
        sessionStorage.setItem(k, val);
        // 初始化创建的事件
        newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);
        // 派发对象
        window.dispatchEvent(newStorageEvent)
      }
    }
    return storage.setItem(key, newVal);
  }
}
  1. 给sessionStorage存值
this.resetSetItem('lang', this.lang);
  1. 监听sessionStorage变化
// 添加对 sessionStorage 的监听
window.addEventListener("setItem", () => {
  // 当sessionStorage 中的lang值发生变化, 给组件中的值重新赋值
  this.lang = sessionStorage.getItem("lang") 
});
上一篇 下一篇

猜你喜欢

热点阅读