vue中watch监听sessionstorage中值的变化

首先在main.js中给Vue.protorype注册一个全局方法,
其中,我们约定好了想要监听的sessionStorage的key值为’isCollapse’,
然后创建一个StorageEvent方法,当我在执行sessionStorage.setItem(k, val)这句话的时候,初始化事件,并派发事件。

 // vue 原型上挂载
    Vue.prototype.resetSetItem = function (key, newVal) {
        if (key === 'isCollapse') {
            // 创建一个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)
        }
    }

发出一个响应

 this.resetSetItem('isCollapse', true)

如何监听一个响应状态?

 window.addEventListener('setItem', () => {
            this.newVal = sessionStorage.getItem('isCollapse')
        })

你可能感兴趣的:(vue中watch监听sessionstorage中值的变化)