【组件封装】监听localStorage的变化

简介: 【组件封装】监听localStorage的变化

前言:


由于在平时开发中,经常或不经常的用到一些功能或插件或函数,回头找起来还挺麻烦,我的想法是我直接将他们全部的封装成一个个的组件,做到“”拿来即用“”且该组件必须经过测试确实可用才行,于是我新创建了一个vue项目,基于"vue": "^2.6.14",用它来测试组件是否正常,因为我vue2/3 ,react hooks 之类的都在用,这里就以vue2作为基础了,后续我的想法是多做几个版本。

功能思路讲述


07d0be05f59940569884b68abb6a2aed.gif

这个是我封装的函数,作用是监听本地存储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;

完整的使用方法示例


目录结构:

image.png

<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>
相关文章
|
2月前
|
前端开发 开发者 容器
如何解决 flex 布局下子元素 width 宽度设置失效的问题
本文通过实际案例,探讨前端开发中flex布局导致子元素宽度设置失效的问题,分析原因并提供两种解决方案:去除flex布局(不推荐)和设置min-width(推荐),帮助开发者深入理解flex特性,提升布局控制能力。
200 0
如何解决 flex 布局下子元素 width 宽度设置失效的问题
|
JavaScript 开发者
vue解决报错Unable to preventDefault inside passive event listener invocation.
vue解决报错Unable to preventDefault inside passive event listener invocation.
2492 0
|
存储 移动开发 API
如何实现浏览器内多个标签页之间的通信
在浏览器中,可通过三种方式实现多标签页通信:一是利用 `localStorage`,通过设置及监听数据变化实现信息传递;二是借助 `Broadcast Channel API`,在同一频道下双向传输消息;三是运用 `SharedWorker`,作为共享工件在各标签间架起沟通桥梁。每种方法依据实际需求选择使用。
|
前端开发 JavaScript
react-qr-code的第三方库来将URL转换成二维码图片
在React中,你可以使用一个叫做react-qr-code的第三方库来将URL转换成二维码图片并保存。首先,你需要安装这个库: ``` npm install react-qr-code ``` 然后,在你的组件中引入react-qr-code: ``` import QRCode from 'react-qr-code'; ``` 接着,在render方法中使用QRCode组件,将URL作为一个属性传递进去: ``` render() { const url = 'https://www.example.com'; return ( <div> <Q
1504 0
|
JavaScript 前端开发
JS中的事件监听
JS中的事件监听
263 4
|
JavaScript API 索引
js中的reduce()方法 讲解 和实现
`reduce()` 方法对数组元素依次应用一个回调函数,将结果累计并最终返回单一值。语法为 `reduce(callback(accumulator, currentValue, currentIndex, array), initialValue)`。参数包括累计器(初次为初始值或首元素)、当前元素值、索引及数组自身。此方法需返回值供下一轮迭代使用。常见应用场景包括计算数组总和与平均值、统计元素频率、过滤与转换数组内容及去除重复项等。例如,可通过 `reduce()` 快速计算 `[1, 2, 3, 4, 5]` 的总和或对对象属性值求和。此外,还可自定义实现 `reduce()` 方法
7152 1
HTML【详解】超链接 a 标签的四大功能(页面跳转、页内滚动【锚点】、页面刷新、文件下载)
HTML【详解】超链接 a 标签的四大功能(页面跳转、页内滚动【锚点】、页面刷新、文件下载)
2193 0

热门文章

最新文章