vue本地存储数据,vuex数据监听

  vue本地存储数据,vuex数据监听

  本文主要介绍了如何在vue中实时监控本地存储,有很好的参考价值,希望对大家有所帮助。如有错误或不足之处,请不吝赐教。

  

目录

  如何实时监控本地存储vue监控数据更改watch的基本用法获取以前的值处理程序方法和即时属性deep deep listening

  

如何实时监听本地存储

  在main.js中

  vue . prototype . $ addStorageEvent=function(type,key,data) {

  if (type===1) {

  //创建StorageEvent事件

  var newStorageEvent=document . create event( storage event );

  常量存储={

  setItem: function (k,val) {

  localStorage.setItem(k,val);

  //初始化创建的事件

  newstorageevent . initstorageevent( setItem ,false,false,k,null,val,null,null);

  //发送对象

  window . dispatch event(newStorageEvent);

  }

  }

  返回storage.setItem(key,data);

  }否则{

  //创建StorageEvent事件

  var newStorageEvent=document . create event( storage event );

  常量存储={

  setItem: function (k,val) {

  sessionStorage.setItem(k,val);

  //初始化创建的事件

  newstorageevent . initstorageevent( setItem ,false,false,k,null,val,null,null);

  //发送对象

  window . dispatch event(newStorageEvent);

  }

  }

  返回storage.setItem(key,data);

  }

  }

  想触发就触发。

  这个。$addStorageEvent(2, butCountNum ,this . butcount);

  监听mouted hook函数。

  window . addevent listener( setItem ,(e)={

  if(e.key===butCountNum){

  //写逻辑

  }

  

vue监听数据变化

  监控数据变化是由Vue中的监听器实现的。你也可以理解为监听器,无时无刻不在监控一些数据的变化。

  

watch的基本用法

  之前,我们向js添加了数据和方法。这一次,我们希望添加watch属性。让我们熟悉一下添加侦听器的位置:

  脚本

  导出默认值{

  名称:“应用程序”,

  //数据

  data() {

  return { };

  },

  //方法

  方法:{},

  //监听器

  观察:{}

  };

  /脚本

  一个简单的例子:

  模板

  p您单击该按钮的次数是:{{ count }} /p

  按钮@ Click= add v-model= count Click/button

  /模板

  脚本

  导出默认值{

  名称:“应用程序”,

  data(){

  返回{

  计数:0

  }

  },

  方法:{

  add(){

  this.count

  }

  },

  观察:{

  //正在侦听的变量计数

  计数(){

  Console.log(计数已更改);

  }

  }

  };

  /脚本

  侦听器更常用于异步操作,所谓异步操作就是数据返回被延迟的操作。例如,如果我们想要请求后端接口,接口会将数据返回给我们,然后我们会将数据呈现在页面上。

  从请求接口到返回数据,需要一定的时间。这时,我们可以使用监听器监听返回的数据。当数据返回时,我们将触发渲染。

  模拟伪异步操作:

  模板

  输入类型=文本 v-模型=输入值

  p从输入框获取的数据:{{ passedInputValue }}/p

  /模板

  脚本

  导出默认值{

  名称:“应用程序”,

  data(){

  返回{

  输入值: ,

  passedInputValue:“”

  }

  },

  观察:{

  输入值(){

  inputValue的数据发生变化后,延迟三秒再赋值给passedInputValue。

  setTimeout(()={

  this . passedinputvalue=this . input value;

  }, 3000)

  }

  }

  };

  /脚本

  此时,你会发现,当你在输入输入框中输入文本时,P标签中的数据并不会立即改变,而是在三秒后呈现出来。

  

获取前一次的值

  在某些情况下,我们需要最新的数据。这时,监听器可以给我们两个值,旧值和新值。

  基于前面的情况,我们只需要添加一个参数来获取旧值,代码如下:

  观察:{

  inputValue(value,oldValue) {

  //第一个参数是新值,第二个参数是旧值。你不能改变顺序。

  Console.log(`新值:$ { value } `);

  Console.log(`旧值:$ { old value } `);

  }

  }

  

handler方法和immediate属性

  我们已经知道,在我们监听的值没有改变的时候不会触发监听器,在页面第一次渲染的时候也不会触发监听器。

  但是现在我有了一个在页面第一次呈现时触发监听器的要求。

  此时,将使用一个方法和一个属性。

  模板

  pFullName: {{fullName}}/p

  PFI rstname:input type= text v-model= first name /p

  /模板

  脚本

  导出默认值{

  名称:“应用程序”,

  data(){

  返回{

  名字:“苏”,

  姓氏:“杨君”,

  全名:“”

  }

  },

  观察:{

  名字:{

  处理程序(新名称,旧名称){

  this . full name=newName this . last name;

  },

  //如果设置为false,则在页面第一次呈现后不会触发侦听器。

  即时:正确

  }

  }

  };

  /脚本

  

deep 深度侦听

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

  我们之前使用的监听器只能监听一个变量的变化,(关注代码中的注释)例如:

  数据:{

  返回{

  //字符串改变,所以你可以听

  名字:“苏”,

  房间:{

  名称:大床房,

  //房间号变化时,听者听不到。

  //因为侦听器只侦听房间,所以它不能侦听号码或名称

  数量:302

  }

  }

  },

  此时,我们需要深度倾听。

  深度拦截在代码上实现并不难,只需要在handler的基础上增加一个深度属性,代码如下:

  观察:{

  房间:{

  处理程序(新房间、旧房间){

  Console.log(房间号已更改)

  },

  深:真的

  }

  }

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

  模板

  div class=搜索

  输入类型=text v-model=inputValue /

  结果中的div class= search-block v-for=(element,index ):key= index

  {{ element }}

  /div

  /div

  /模板

  脚本

  导出默认值{

  名称:“应用程序”,

  data() {

  返回{

  结果:[],

  模拟数据:[

  浙江大学,

  中国人民大学,

  清华大学,

  清华大学附属中学,

  浙江理工大学,

  浙江工业大学

  ],

  输入值:“”

  };

  },

  观察:{

  输入值(值){

  如果(!值){

  setTimeout(()={

  this . results=this . mock data . filter(El={

  console.log(值);

  return el.indexOf(value)!==-1;

  });

  }, 300);

  }

  }

  }

  };

  /脚本

  以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: