vue监听缓存数据(localStorage)

2023-11-18

方法:可以重写localStorage的setItem方法,当调用setItem方法设置新值的时候,会new
Event(‘setItemEvent’) 用window.dispatchEvent()这个方法来派发一个事件,让window去监听

以下demo实现的是 一个页面获取诗句 然后将获取的数据用localStorage存储起来 另一个页面进行监听 一旦数据发生改变 则控制台打印 ‘值改变了’ 并将新值打印出来

实现步骤:

1.先在src下新建utils文件夹,新建tools.js,写一个dispatchEvent派发事件 如:utils/tools.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

2.在main.js里面全局引入tools,并use 以便二个vue组件能够触发派发事件

import tools from ‘./utils/tool.js’
Vue.use(tool)

3.在一个vue组件当中向localStorage存储数据 这里是将获取到的诗句存储起来

sendSentences.vue组件

 
methods: {
    getSentences() {
      axios({
        url: 'https://api.apiopen.top/api/sentences'
      }).then(res => {
        this.sentencesTitle = res.data.result.from
        this.sentences = res.data.result.name
        window.localStorage.setItem('gsStorename', JSON.stringify(this.sentences))
      })
    }
  }

在另一个vue组件当中监听localStorage数据变化,来赋值,监听要写在mounted ()中,这里将打印‘值改变了’,并将每次变化后的新值打印出来了 代码如下

watchSentences.vue组件

mounted() {
    // 监听localhostStorage的数据变化,结合utils/tool.js配合使用
    window.addEventListener('setItemEvent', function(e) {
      const newdata = JSON.parse(e.newValue)
      console.log('值改变了',newdata)
    })
  }

在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue监听缓存数据(localStorage) 的相关文章

随机推荐

  • score在java中_java基础

    DOC执行 set classpath c java Hello 将类的查找路径指向了c盘 在运行时 会从c盘下开始查找 mian 方法是程序的主方法 在一个java程序中有且只能有一个main 方法 main method 之前必须加上p
  • 关于“访问映射网络驱动器提示 本地设备名已在使用中,此连接尚未还原”解决方法!...

    这几天单位2台电脑出现故障 其中一台作为内部部门范围内文件服务器 另外一台电脑连接该机器的共享文件夹 一直正常 就这几天突然出现 访问映射网络驱动器提示 本地设备名已在使用中 此连接尚未还原 的错误 网上查找资料发现一段说明公司客户端的电脑
  • SpringMVC系列(二)之常用注解介绍及参数传递说明

    目录 前言 一 SpringMVC常用注解 1 1 RequestParam 1 2 RequestBody 1 3 PathVariable 1 4 RequestHeader 二 SpringMVC的参数传递 2 1 基础类型传参 可以
  • Java的作用域

    Java的作用域 作用域是指变量能生效的区域范围 声明在不同地方的变量具有不同的作用域 而决定作用域的就是花括号的位置 同时还决定了变量名的可见性与生命周期 Java语言中 变量的类型主要有成员变量 静态变量 和局部变量三种 类的成员变量
  • VS2013编译64位OpenSSL(附32位)

    安装ActivePerl 这个没什么好说的 直接运行msi即可 编译OpenSSL 1 使用Visual Studio Tool中的 VS2013 x64 本机工具命令提示 来打开控制台 也可以打开一个控制台 然后进到 安装路径 Micro
  • OLED拼接屏:打破显示界限,在教育培训中有哪些应用展示?

    早在20世纪初 人们就开始梦想着能够拥有一种透明的屏幕 可以将信息直接显示在空气中 然而 直到现在 这个梦想才真正实现 老透明屏是一种新型的显示技术 它可以将图像和文字直接投射到空气中 使其看起来像是悬浮在空中一样 老透明屏的工作原理是利用
  • [114]python supervisor使用

    Supervisor 是基于 Python 的进程管理工具 只能运行在 Unix Like 的系统上 也就是无法运行在 Windows 上 Supervisor 官方版目前只能运行在 Python 2 4 以上版本 但是还无法运行在 Pyt
  • MQTT在解析一条消息时收不到其他消息

    前提说明 客户端发送两个topic消息 第一个消息依赖第二个消息传入的值 两个topic分别为topic1 topic2 业务说明 topic1消息订阅之后 进行相关业务处理 查库插库等操作 然后轮训redis等待10s redis中存的时
  • 除法取模(比赛常用)

    由费马小定理可推出 其中m为素数 那么 就可以变成 如果m太大 可以使用快速求正整数幂
  • 操作系统系列(二)——进程

    往期地址 操作系统系列一 操作系统概述 本期主题 操作系统进程 文章目录 1 异常 1 前言 异常控制流是什么 2 异常的处理过程 3 异常的分类 4 异常和进程的关系 2 进程 1 进程的概念 2 进程所做的事情 意义 1 逻辑控制流 2
  • Adobe Flash CS6 下载与安装教程

    文章目录 Adobe Flash CS6 简介 一 软件介绍 二 软件特点 三 新增功能 四 安装要求 1 Windows 2 Mac OS 一 Adobe Flash CS6 下载 自取 二 Adobe Flash CS6 安装 Adob
  • QquickWidget与QML交互 ,自定义信号

    在widget加载QML文件 在加载过程中把qml文件添加到资源文件 在Pro文件中添加 QT quickwidgets Qt qml 下面如何qml中的信号连接呢 查看QQuickWidget类 找到了rootObject 方法 这个返回
  • 华为性格测试的破解方法

    几个原则必须要遵守 1 表现出积极进取 乐观向上 不焦虑不紧张的形象 2 华为喜欢那种喜欢艰苦奋斗的人 所以要能吃苦耐劳不计较报酬 3 华为喜欢中庸 不要表现自己的特性 有自己性格可能会被刷掉 4 华为喜欢稳定的 稳定超过一切包括技术 包括
  • 谷歌chromeos_如何安装Chrome OS系统

    Chrome OS是由Google设计的基于Linux内核的操作系统 它源自免费软件Chromium OS 并使用Google Chrome网络浏览器作为其主要用户界面 因此 Chrome操作系统主要支持Web应用程序 谷歌于2009年7月
  • 修改mysql数据库的时区

    查看数据库时区 mysql gt show variables like time zone Variable name Value system time zone EST time zone SYSTEM 2 rows in set 0
  • 阿里弃用Hibernate,却用MyBatis,竟然是因为这个!

    最近一直在研究MyBatis源码 作为国内经常使用的持久层框架 其内部代码的设计非常优秀 比如在开发过程中 有能力对框架进行深度的定制化开发 解决BUG也更加得心应手 另外学习开发者是如何设计高扩展性 低耦合性的代码 便于在自己的开发场景中
  • 66W真的比60W充电更快吗?基于Charge pump Charger的快充方案分析

    智能手机发展至今 充电功率和电池续航一直是人们最为关注的问题之一 从早期的5V 1A和5V 2A的低瓦数快充 到后来的高压大电流和低压小电流两极分化 不同手机厂商都制定了自己的充电协议 如OPPO的VOOC vivo的Flash Charg
  • 【HBZ分享】Redis的热点key问题

    Redis是如何将数据落在某个Redis节点上的 通过crc16取模 不是hash算法 是校验一种算法 计算该key应该落到哪个hash槽 solt 上 一共16384个hash槽上 这些槽位会均匀分布在每个节点 上 注意 只有主节点才有槽
  • Qt生成随机数

    参考网址 https www it610 com article 5005396 htm https www cnblogs com bingcaihuang archive 2011 02 11 1951401 html 生成随机数主要用
  • vue监听缓存数据(localStorage)

    方法 可以重写localStorage的setItem方法 当调用setItem方法设置新值的时候 会new Event setItemEvent 用window dispatchEvent 这个方法来派发一个事件 让window去监听 以