JS组件封装之监听localStorage的变化

作者:云间搭桥

时间:2026-10-25

浏览:178

本文介绍如何封装一个监听localStorage变化的JavaScript组件。核心思路是通过重写localStorage.setItem方法,利用dispatchEvent派发自定义事件,从而实现存储值变化时的响应式监听。文章提供了完整的工具函数代码及Vue2环境下的使用示例,帮助开发者实现本地存储的实时同步。

文章目录

前言:

在日常开发过程中,我们经常会遇到需要复用某些功能、插件或函数的场景,但事后查找往往十分耗时。为此,我的思路是将这些常用功能封装为独立的组件,确保它们能够“拿来即用”,并且必须经过实际测试验证其可用性。基于此想法,我新建了一个Vue项目,使用版本为"vue": "^2.6.14"来测试组件是否正常运行。由于我同时使用Vue2/3和React Hooks等技术,这里以Vue2作为基础进行演示,后续计划开发更多版本的组件。

功能思路讲述

前言:

该封装函数的主要功能是监听本地存储localStorage的变化。当代码中调用方法设置localStorage时,该组件能够捕获这一变化,并将最新的值保存到变量中,从而实现类似响应式的数据同步效果。

这个函数最核心之处其实是JavaScript的一个方法dispatchEvent,意思是派发事件,主动的给DOM事件,具体的使用方法可以查看红宝书,我记得他的参数有16个,可以好好看看这个,我之前拿它做无头浏览器来着。

组件内容:

找一个.js文件放入以下代码

function dispatchEventStroage() {
  const signSetItem = localStorage.setItem
  localStorage.setItem = function(key, val) {
      let setEvent = new Event('setItemEvent')
      setEvent.key = key
      setEvent.newValue = val
      window.dispatchEvent(setEvent)
      signSetItem.apply(this, arguments)
  }
}
 
export default dispatchEventStroage;

完整的使用方法示例

目录结构:

前言:

<template>
  <div>
    <h2>测试页面</h2>
    <h4>{{value}}</h4>
  </div>
</template>
 
<script>
  import dispatchEventStroage from '@/utils/tools'
export default {
  data () {
    return {
      value:"000",
      num:1
    }
  },
  mounted () {
    let _this = this
    dispatchEventStroage("title")
    window.addEventListener("setItemEvent", function (e) {
    if (e.key === "title") {
      console.log(e.newValue)
      _this.value = e.newValue
    }
  })
    setInterval(()=>{
      this.num += 1
      localStorage.setItem("title",this.num);
    },1000)
  }
}
</script>
 
<style>
</style>

到此这篇关于监听localStorage的变化的文章就介绍到这了,更多相关监听localStorage的变化内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章