vue中watch和computed的区别是什么啊,vue watch compute

  vue中watch和computed的区别是什么啊,vue watch compute

  本文主要介绍vue版中computed和watch的使用,在基于vue框架的前端项目开发过程中,只要涉及到稍微复杂一点的业务,我们都会用到computed计算属性的hook函数,可以用于一些状态组合处理和缓存操作。

  

目录

  前言一、computed uses getter VS setter其他组件状态的基本用法二。watch基本上使用即时和深度实例。

  

前言

  在基于vue框架的前端项目开发过程中,每当涉及到稍微复杂的业务时,我们总会用到computed计算属性的hook函数,可以用于一些状态组合处理和缓存操作。

  

一、computed基础使用

  在computed中,声明了一个函数,需要提供一个返回值,可以显示在页面上,也可以结合其他方法进行处理。

  结合state状态使用

  通过changeName返回依赖于name的字符串。

  li计算机基本使用/li

  Li值:{{ name }}/li

  李{ { changeName } }/李

  data() {

  返回{

  姓名:张三,

  };

  },

  计算值:{

  changeName: function () {

  返回一段依赖于名称的文本:$ { this . name } `;

  },

  },

  

使用其他组件状态

  主动触发computed方法,比较不依赖于其他状态的差异,有些操作是通过点击事件主动触发的。

  li{{ isCache }}/li

  li{{ cacheTip }}/li

  li{{ changeCache }}/li

  Utton @ click=处理更改以修改文本/button/li

  data() {

  返回{

  缓存提示:原始缓存提示:缓存提示,

  };

  },

  计算值:{

  isCache: function () {

  返回一段不依赖于任何属性值的文本`;

  },

  changeCache: function () {

  Return依赖于cacheTip,$ { this . cacheTip } `;

  },

  },

  方法:{

  handleChange() {

  This.cacheTip=cacheTip状态已修改;

  },

  },

  当我们点击修改状态时,可以看到修改cacheTip时,依赖cacheTip的changeCache也会发生变化。

  IsCache不与其他状态相关联,因此它保持其原始值不变。

  

getter VS setter

  上面的cacheTip,或者isCache,在computed的一般方法中,都默认使用getter方法来获取处理后的值。

  可以写成:

  isCache: {

  setter:function () {

  返回一段不依赖于任何属性值的文本`;

  }

  }

  Getter和setter可以进一步处理需要处理的状态。

  李{{名字} }/李

  李{{姓氏} }/李

  李{ { setter getter } }/李

  button @ click= handlechangefirst 修改文本/button/li

  data() {

  返回{

  名字:“lewyon001”,

  姓氏:“Buou 001”,

  };

  },

  计算值:{

  setterGetter: {

  //getter

  get: function (newValue) {

  console.log(newValue ,new value);

  返回this . first name“”this . last name;

  },

  //setter

  set: function (newValue) {

  console.log(newValue ,new value);

  this . first name=` $ { new value . first name } `;

  this . last name=` $ { new value . last name } `;

  },

  },

  }

  方法:{

  handleChangeFirst() {

  This.setter getter={名字: Lewy on ,姓氏: Buou };

  },

  },

  get属性可以获取原来的依赖值并进行处理,set方法可以获取修改后的依赖值,修改后可以显示在页面上,也可以根据其他业务需要进行处理。computed方法的基础,包括高级操作,以及setter和getter方法如上。

  使用建议:

  作为经常使用的方法:

  Computed可以用作依赖于其他状态的缓存,包括一些不经常更新的内容、开销减少的简单字符串模板、其他状态和其他开发中的场景。我们都可以用,结合手表等。

  

二、watch基本使用

  顾名思义,watch是2.x版本中的一个钩子函数,监视和观察组件的状态变化。常见的应用场景包括监控路由变化,以及从父组件传输到子组件的props数据的变化。

  使用watch时,需要在数据中活出一个状态,添加到watch中进行观察。当它发生变化时,watch可以通过默认参数获得最新的值变化。

  Li值:{{ name }}/li

  李{ { name tip } }/李

  Li异步操作得到的年龄:{{age}}/li

  Utton @ click= getuser 修改名称/button/li

  设p1=新承诺((解决,拒绝)={

  resolve({ age: 14 });

  });

  data() {

  返回{

  姓名:张三,

  提示:“名称未更改”,

  };

  },

  观察:{

  名称(新值,旧值){

  //watch可以监听状态的一些变化,做一些处理,修改状态,或者执行异步操作。

  This.nameTip=姓名状态已更改;

  this . get data();

  },

  },

  方法:{

  getData() {

  setTimeout(()={

  this . getage();

  }, 1000);

  },

  getUser() {

  this.name= lisi

  },

  getAge() {

  p1.then((res)={

  console . log(RES);

  this . age=RES . age;

  });

  },

  },

  当您单击修改时,名称的值将被修改为lisi。手表监测到姓名的修改后,您可以修改姓名提示的文本,并开始修改其他状态。

  我们也可以通过newVal得到name的最新值,或者比较运算oldVal的值。

  使用promise和timer来模拟请求后台数据和状态变化时的渲染,这是我们在开发过程中使用watch的一个典型例子。

  

immediate和deep

  Immediate:当手表第一次加载或者第一次绑定时,需要监控并获取数据中的状态,那么可以使用immediate,设置为true,属性值为boolean。

  当deep:watch监视的值是一个对象时,可以使用该属性来监视对象的深层属性变化。

  注意事项:

  deep的默认值为false。使用的时候需要加上deep: true。deep的值与immediate的值相同,都是布尔值。

  

实例

  li{{ immediateNameTip }}/li

  data() {

  返回{

  即时名称:“即时名称原始值”,

  即时姓名:“即时姓名更改时提示文本”,

  };

  },

  即时姓名:{

  处理程序(newVal,oldVal) {

  Console.log(immediate表示在初始监控值值得时也执行这段代码);

  setTimeout(()={

  this . immediate name IP=

   ImmediateName添加immediate,将执行第一次绑定;

  }, 2000);

  },

  即时:真的,

  Deep: true,//仅用于对象的深层属性更改

  },

  当immediate设置为true时,第一个传入的immediateNameTip将在计时器执行后更改。

  这里没有更多的深的例子。可以在实战中自己使用和学习。

  使用建议;

  Watch可用于监控路由更改,并以异步方式获取数据。同时在一些昂贵的状态下监控也有很多应用场景,包括购物车功能的实现。

  关于vue2.x的这篇文章到此为止,它解释了computed和基于computed的watch的用法。更多相关vuecomputed和watch内容,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

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

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