Vue中localStorage的用法和监听localStorage值的变化

 更新时间:2023年04月19日 09:35:12   作者:中亿丰数字科技  
这篇文章主要介绍了Vue中localStorage的用法和监听localStorage值的变化,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

localStorage API

要在 web 应用中使用 localStorage,首先要熟悉它提供的属性和方法:

  • length:返回 localStorage 中的键值对的数目
  • setItem():增加一个键值对到 localStorage 中
  • getItem():从 localStorage 中查询指定 key 的值
  • removeItem():从 localStorage 中删除指定的键值对
  • clear():清空 localStorage 中所有键值对
  • key(): 传入一个数字 n,用于返回指定第 n 个键的值

setItem()

从它的名字可以得知,此方法可以用来存储数据到 localStorage 中。

它接收两个参数:一个 key 和一个 value。这个 key 稍后可用于从 localStorage 中检索它的值。

localStorage.setItem("code","12345")

上述代码中的 ‘code’ 就是 key,’Tylor’ 就是 12345。

需要注意的是 localStorage 只能存储字符串。要存储数组或对象,需要先把它们转成字符串。要实现这个操作,需要在调用 setItem() 之前先用 JSON.stringify() 方法转换一下:

 let obj = {
      name: "qwer",
      code: "1234",
    };
 localStorage.setItem("msg", JSON.stringify(obj));

注意:此方法执行时可能会抛出异常,例如存储空间已满时。建议使用 try...catch...语句处理异常以避免程序报错。

getItem()

getItem() 方法可以用来访问已存储在浏览器 localStorage 中的数据。

它只接收一个参数 key ,会把对应的 value 作为字符串返回。

要检索上面保存的 msg 数据,可以这样做:

 localStorage.getItem("msg");

调用之后会返回一个字符串:

{"name":"qwer","code":"1234"}

要在 JavaScript 中使用该值,你可能想把它转为一个对象。这时可以用 JSON.parse() 方法把 JSON 字符串转为 JavaScript 对象。

JSON.parse(localStorage.getItem("msg"))

removeItem()

当传入一个 key 时,removeItem() 方法会从 localStorage 中删除指定的数据。如果没有找到指定的 key,则什么都不做。

localStorage.removeItem("msg")

clear()

调用此方法后,会清空当前域名下所有存储在 localStorage 中的数据。调用时不需要传入任何参数。

localStorage.clear()

key()

key() 方法一般用于遍历 localStorage 中所有的数据时,传入一个以 0 开始计数的数字,它会返回对应的 key 的名字。

let index = localStorage.key(index)

在vue中实现监听localstorage中某个键对应的值的变化

在根目录下创建一个名为utils的文件夹,在文件夹中创建一个tool.js文件

//****将这段内容放在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;

在main.js中引入使用

import tool from "./utils/tool";
Vue.use(tool);

在需要监听localstorage中数据变化的文件中加以下代码

//解决this指向问题,在window.addEventListener中this是指向window的。
//需要将vue实例赋值给_this,这样在window.addEventListener中通过_this可以为vue实例上data中的变量赋值
let _this=this;
//根据自己需要来监听对应的key
window.addEventListener("setItemEvent",function(e){
	//e.key : 是值发生变化的key
	//e.newValue : 是可以对应的新值
	if(e.key==="formDocumnet"){
		console.log(e.newValue);
		_this.content=e.newValue;
	}
})

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

相关文章

  • Vue封装Axios请求和拦截器的步骤

    Vue封装Axios请求和拦截器的步骤

    这篇文章主要介绍了Vue封装Axios请求和拦截器的步骤,帮助大家更好的对axios进行封装并将接口统一管理,同时为请求和响应设置拦截器interceptors。,感兴趣的朋友可以了解下
    2020-09-09
  • 使用mint-ui实现省市区三级联动效果的示例代码

    使用mint-ui实现省市区三级联动效果的示例代码

    下面小编就为大家分享一篇使用mint-ui实现省市区三级联动效果的示例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • 利用nginx部署vue项目的全过程

    利用nginx部署vue项目的全过程

    今天要用到服务器nginx,还需要把自己的vue的项目部署到服务器上去所以就写一下记录下来,下面这篇文章主要给大家介绍了关于利用nginx部署vue项目的相关资料,需要的朋友可以参考下
    2022-03-03
  • 手把手教你用VUE封装一个文本滚动组件

    手把手教你用VUE封装一个文本滚动组件

    封装组件相信对大家来说都不陌生了,下面这篇文章主要给大家介绍了关于用VUE封装一个文本滚动组件的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • vue实现页面添加水印

    vue实现页面添加水印

    这篇文章主要为大家详细介绍了vue实现页面添加水印功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 9种方法优化jQuery代码详解

    9种方法优化jQuery代码详解

    本文将详细介绍jQuery代码优化的9种方法,需要的朋友可以参考下
    2020-02-02
  • Vue 详解mixins混入用法大全

    Vue 详解mixins混入用法大全

    如果我们在每个组件中去重复定义这些属性和方法会使得项目出现代码冗余并提高了维护难度,针对这种情况官方提供了Mixins特性,这时使用Vue mixins混入有很大好处,下面就介绍下Vue mixins混入使用方法,需要的朋友参考下吧
    2021-08-08
  • vue最强table vxe-table 虚拟滚动列表 前端导出问题分析

    vue最强table vxe-table 虚拟滚动列表 前端导出问题分析

    最近遇到个问题,后台一次性返回2万条列表数据并且需求要求所有数据必须全部展示,不能做假分页,怎么操作呢,下面通过本文介绍下vue最强table vxe-table 虚拟滚动列表 前端导出问题,感兴趣的朋友一起看看吧
    2023-10-10
  • element UI 中的 el-tree 实现 checkbox 单选框及 bus 传递参数功能

    element UI 中的 el-tree 实现 checkbox&n

    在日常项目开发中,会经常遇到,树形结构的查询方式,为了快速方便开发,常常会使用到快捷的ui组件去快速搭树形结构,这里我用的是 element ui 中的 el-tree,对element UI 中的 el-tree 实现 checkbox 单选框及 bus 传递参数的方法感兴趣的朋友跟随小编一起看看吧
    2022-09-09
  • vue3 setup中defineEmits与defineProps的使用案例详解

    vue3 setup中defineEmits与defineProps的使用案例详解

    在父组件中定义String、Number、Boolean、Array、Object、Date、Function、Symbol这些类型的数据,使用defineEmits会返回一个方法,使用一个变量emits(变量名随意)去接收,本文给大家介绍vue3 setup中defineEmits与defineProps的使用案例,感兴趣的朋友一起看看吧
    2023-10-10

最新评论