# vue 项目中监听 localStorage的变化,(非父子组件除过传值,获取数据变化)

vue 项目中监听 localStorage的变化,(非父子组件除过传值,获取数据变化)

first :
main.js 中给 Vue.protorype 注册一个全局方法,然后创建一个 StorageEvent 方法,当我在执行sessionStorage.setItem(k, val) 的时候,初始化事件并派发事件。

Vue.prototype.$addStorageEvent = function (key, data) {
    // 创建一个StorageEvent事件
    var newStorageEvent = document.createEvent('StorageEvent');
    const storage = {
        setItem: function (k, val) {
            localStorage.setItem(k, val);
            // 初始化创建的事件
            newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);
            // 派发对象
            window.dispatchEvent(newStorageEvent);
        }
    }
    return storage.setItem(key, data);
}

second : 在你需要存储的组件内 -----写入缓存

 api.msgnumber.findSMSBalance().then((res) => {
                if (responseValidate(res.data)) {
                    this.$addStorageEvent("userInfo", JSON.stringify(res.data.data)); 
                }
            });

third :
在你需要监听的页面去监听做操作

  mounted() {
    this.check();
    window.addEventListener('setItem', (e) => {
        if (e.key === 'userInfo') {
            this.Msgvalue = JSON.parse(e.newValue);
        }
    });
  },
  methods: {
    check() {
      api.msgnumber.findSMSBalance().then(res => {
        if (responseValidate(res.data)) {
          this.Msgvalue = res.data.data;
          localStorage.setItem('userInfo', JSON.stringify(res.data.data));
        }
      });
    },
  }

好了,有了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值