千家信息网

vue中怎么实时监听本地存储

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章主要介绍"vue中怎么实时监听本地存储",在日常操作中,相信很多人在vue中怎么实时监听本地存储问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"vue中怎么实时监
千家信息网最后更新 2025年01月31日vue中怎么实时监听本地存储

这篇文章主要介绍"vue中怎么实时监听本地存储",在日常操作中,相信很多人在vue中怎么实时监听本地存储问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"vue中怎么实时监听本地存储"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

如何实时监听本地存储

在main.js中

Vue.prototype.$addStorageEvent = function (type, key, data) {  if (type === 1) {  // 创建一个StorageEvent事件  var newStorageEvent = document.createEvent('StorageEvent');  const storage = {      setItem: function (k, val) {          localStorage.setItem(k, val);          // 初始化创建的事件          newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);          // 派发对象          window.dispatchEvent(newStorageEvent);      }  }  return storage.setItem(key, data);} else {  // 创建一个StorageEvent事件  var newStorageEvent = document.createEvent('StorageEvent');  const storage = {      setItem: function (k, val) {          sessionStorage.setItem(k, val);          // 初始化创建的事件          newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);          // 派发对象          window.dispatchEvent(newStorageEvent);      }  }  return storage.setItem(key, data);}}

想要的时候触发

this.$addStorageEvent(2, "butCountNum", this.butCount);

在mouted钩子函数中进行监听

window.addEventListener('setItem', (e) => {      if(e.key === "butCountNum"){          //写逻辑      }

vue监听数据变化

监听数据变化,在Vue中是通过侦听器来实现的,你也可以将它理解为监听器,时刻监听某个数据的变化。

watch的基本用法

在之前我们在js中添加了data、methods,这一次我们要添加的是watch属性。下面我们先来眼熟一下侦听器的添加位置:

一个简单的例子:

侦听器更多的是用在异步操作中,所谓异步操作就是数据返回有所延迟的操作,比如说我们要请求后端的接口,接口会返回给我们数据,然后我们再将数据渲染在页面上。

从请求接口到返回数据,这中间需要一定的时间,此时我们就可以用侦听器来侦听返回的数据,当数据返回以后,我们再触发渲染。

模拟一个伪异步操作:

此时你就会发现,当你在input输入框中输入文字以后,p标签内的数据不是立马改变,而是过三秒才会去渲染。

获取前一次的值

在某些场景中,我们会需要上一次的数据,此时,侦听器就可以给我们两个值,旧值和新值。

在上一个案例的基础上,我们只需要添加一个参数,即可获取旧值,代码如下:

watch:{    inputValue(value,oldValue) {        // 第一个参数为新值,第二个参数为旧值,不能调换顺序        console.log(`新值:${value}`);        console.log(`旧值:${oldValue}`);    }}

handler方法和immediate属性

前面我们已经知道,当我们侦听的值没有发生改变的时候,是不会触发侦听器的,并且,页面第一次渲染的时候也不会触发侦听器。

但是现在我有个需求就是要让页面第一次渲染的时候就去触发侦听器呢?

此时就要用到一个方法和一个属性。

deep 深度侦听

所谓深度侦听就是侦听对象内部属性的值。

我们之前用的侦听器都只能侦听一个变量的变化,(重点看一下代码中的注释)例如:

data:{    return {        // 字符串发生变化,可以侦听        firstName: 'Su',        room:{            name:"大床房",            // 当房号发生变化的时候,侦听器并不能侦听到。            // 因为侦听器只侦听到room,不能侦听number或者name            number: 302        }    }},

此时我们就需要深度侦听。

深度侦听在代码上并不难实现,只需要在handler的基础上添加一个deep属性,代码如下:

watch:{    room:{        handler(newRoom,oldRoom){            console.log("房间号发生了变化")        },        deep: true    }}

案例:使用侦听器和定时器实现伪模糊搜索

到此,关于"vue中怎么实时监听本地存储"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0