首先在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')
})
网友评论