Vue 监听localStorage

2023-11-08

1、在utils目录下建tool.js文件,文件代码如下

// 重写setItem事件,当使用setItem的时候,触发,window.dispatchEvent派发事件
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加如下代码 

import tool from "./utils/tool";

Vue.use(tool);

3、PageA页面,改变并监听localstorage,可搭配Vuex使用,以免初始化时值固定为默认值,而不是localstorage.setItem之后的值。

computed: {
    elderUiStyle: {
      get() {
        return this.$store.state.elderUiStyle
      },
      set() {}
    }
},

methods: {
    onSwitchVersions() {
      const styleVal = JSON.parse(localStorage.getItem("elderUiStyle"))
      localStorage.setItem("elderUiStyle", !styleVal)
    }
},

mounted() {
    //根据自己需要来监听对应的key
    window.addEventListener("setItemEvent", (e) => {
      //e.key : 是值发生变化的key
      //e.newValue : 是可以对应的新值
      if (e.key === "elderUiStyle") {
        this.$store.commit("SET_ELDERUISTYLE", e.newValue) // 可搭配Vuex使用,以免初始化时值固定为默认值,而不是localstorage.setItem之后的值
      }
    })
},

destroyed() {
    window.addEventListener("removeItemEvent", (e) => {});
},

4、PageB页面,根据监听到到的localstorage改变相应的值

mounted() {
    //根据自己需要来监听对应的key
    window.addEventListener("setItemEvent", (e) => {
      //e.key : 是值发生变化的key
      //e.newValue : 是可以对应的新值
      if (e.key === "elderUiStyle") {
        this.elderUiStyle = e.newValue;
      }
    })
},

// 移除监听
destroyed() {
    window.addEventListener("removeItemEvent", (e) => {});
}

为了网页性能,记得移除监听哦!

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

Vue 监听localStorage 的相关文章

随机推荐

  • 基于FPGA的超声波测距

    文章目录 一 项目框架 二 超声波测距模块 三 串口模块 1 串口发送模块 2 串口发送控制模块 四 蜂鸣器模块 五 vga显示模块 1 vga协议驱动代码 2 vga数据控制模块 六 数码管 1 数码管段选控制 2 数码管位选 七 顶层文
  • Vue与ElementUI的v-loading控件

    Vue与Element的v loading控件 在需要添加loading动画的组件中加入v loading xxx xxx为true时表示加载 false时关闭加载 默认样式如下 如果要修改样式或者添加文字 则使用element loadi
  • qt调用图片并自适应界面大小显示

    一 前言 记录qt使用图片打开 查看和关闭等操作 实现点击按键 打开选择的指定位置图片 有缩放显示 并可以点击放大按键放大图片 放大后图片自适应电脑窗口大小 大于窗口尺寸会根据最大宽和高缩放 小于窗口尺寸就按原比例居中显示出来 二 环境 w
  • chromedriver不在路径的解决办法

    from selenium import webdriver driver webdriver Chrome 错误信息 WebDriverException Message chromedriver executable needs to
  • BUUCTF-Secret File

    Secret 意为秘密 可知我们需要在网页中寻找到隐藏的flag文件 启动环境打开靶机 直接查看源码 发现一个文件 打开后点击 secret 但是会直接跳转到 end php 并且提示查阅结束 说明页面跳转过快 需要手动抓放包来查看 经过拦
  • 微信 Android 模块化架构重构实践(上)

    转自 https cloud tencent com developer article 1005631 作者 carlguo 微信Android架构历史 微信Android诞生之初 用的是常见的分层结构设计 这种架构简单 清晰并一直沿袭至
  • 解决mysql链接时报错Authentication plugin ‘caching_sha2_password‘ cannot be loaded的问题

    1 打开命令提示符 2 输入 cd C Program Files MySQL MySQL Server 8 0 bin 3 进入到C Program Files MySQL MySQL Server 8 0 bin gt 目录之后 键入
  • NLP学习(二)中文分词技术

    运行平台 Windows Python版本 Python3 x IDE PyCharm 一 前言 这篇内容主要是讲解的中文分词 词是一个完整语义的最小单位 分词技术是词性标注 命名实体识别 关键词提取等技术的基础 本篇博文会主要介绍基于规则
  • Windows中账户没有登录的情况下程序开机自启动

    windows打开任务计划程序 开始菜单 所有程序 管理工具 任务计划程序 打开后点击右边创建任务 在常规界面填写启动名称描述等信息 安全选项勾选不管用户是否登录都要运行 我这里为了保险起见还勾选了使用最高权限 在触发器界面选择新建 开始任
  • c++运算符

    运算符 作用 用于执行代码的运算 1 算术运算符 下表显示了 C 支持的算术运算符 假设变量 A 的值为 10 变量 B 的值为 20 则 运算符 描述 实例 把两个操作数相加 A B 将得到 30 从第一个操作数中减去第二个操作数 A B
  • 程序员学数据库那些事儿

    最近有人问 是问 不是请教 我数据库怎么学 要学哪些 以下我谈一些个人想法 其实我的数据库知识不是很扎实 真心的 当年我学这个东西时某个大神告诉我 学会sql server 走遍天下都不怕 事实上 这几年如果只会sqlserver根本到哪都
  • C++ 构造函数和析构函数是否可以继承?

    先看一个例子 cpp view plain copy include
  • 架构师需要了解的Paxos原理、历程及实战

    架构师需要了解的Paxos原理 历程及实战 数据库高可用性难题 数据库的数据一致和持续可用对电子商务和互联网金融的意义不言而喻 而这些业务在使用数据库时 无论 MySQL 还是 Oracle 都会面临一个艰难的取舍 就是如何处理主备库之间的
  • linux下部署redis

    基础知识 1 Redis的数据类型 字符串 列表 lists 集合 sets 有序集合 sorts sets 哈希表 hashs 2 Redis和memcache相比的独特之处 1 redis可以用来做存储 storge 而memcache
  • Java必懂之命名规范

    定义规范的目的是为了使项目的代码样式统一 使程序有良好的可读性 在此我从网上查找了一篇写得比较好的文章 来让大家学习 顺便自己复习一下 有时候自己写的类名不符合规范 Eclipse会出现黄色叹号 就是表示你的命名不规范 然而 规范不是规定
  • 微信小程序image图片自适应宽度比例显示的方法

    我们都知道微信小程序的组件image是用来显示图片的 它有一下几个属性 1 src 图片资源地址2 mode 图片裁剪 缩放的模式3 binderror 当错误发生时 发布到 AppService 的事件名 事件对象event detail
  • SpringMVC的架构有什么优势?——控制器(一)

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 React从入门到精通 前端炫酷代码分享 从0到英雄 vue成神之路 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架
  • 合宙Air103

    基础资料 基于Air103开发板 Air103 LuatOS 文档 上手 开发上手 LuatOS 文档 探讨重点 对官方社区库接口RC522模块库调用及示例进行复现及分析 了解RDIF及非接触式IC卡的原理及操作方法 实现功能 利用已知的A
  • 单片机拟真电路图软件_电路仿真软件有哪些?6款常用的电路仿真软件推荐

    一些网友需要下载电路仿真软件这一类软件 但是 网络上寻找电路仿真软件却比较麻烦 那么 电路仿真软件有哪些 小编今天就给大家整理了6款常用的电路仿真软件推荐给大家 需要下载电路仿真软件的网友可以挑选一下 Machining 6款常用的电路仿真
  • Vue 监听localStorage

    1 在utils目录下建tool js文件 文件代码如下 重写setItem事件 当使用setItem的时候 触发 window dispatchEvent派发事件 function dispatchEventStroage const s