vue中computed表示,vue中计算属性和watch的区别

  vue中computed表示,vue中计算属性和watch的区别

  本文分析了Vue的计算和手表的区别。computed用于监控自身定义的变量,可以直接在页面上使用。观察是监视Vue实例上的数据变化。通俗地说,就是检测数据中申报的数据。有需要的朋友可以参考一下。

  :

目录

   1.computed介绍1.1、get和set的用法1.2、计算属性的缓存2、watch介绍3、二者的区别3.1、computed介绍3.2、应用场景4

  

一、computed介绍

  Computed用于监控自身定义的变量。这个变量不是在数据中声明的,而是在computed中直接定义的,可以直接在页面上使用。

  //基本用法

  {{msg}}

  输入v-model=name /

  //计算属性

  计算值:{

  消息:函数(){

  返回this.name

  }

  }

  在输入框中,当值得更改名称时,msg也会更改。这是因为computed监听自己的属性msg,发现一旦名称改变,msg会立即更新。

  注意:消息不能在数据中定义,否则将报告错误。

  

1.1、get 和 set 用法

  输入垂直模型=完整 br

  输入v-model=first br

  输入垂直模型=秒

  data(){

  返回{

  第一:“美”,

  第二:“姐姐”

  }

  },

  计算值:{

  满:{

  Get(){ //需要读取当前属性值时执行回调函数,根据相关数据计算并返回当前属性的值。

  返回this.first this.second

  },

  Set(val){ //监控当前属性值的变化,属性值变化时执行,更新相关属性数据。

  let names=val.split( )

  this.first=names[0]

  this.second=names[1]

  }

  }

  }

  get 方法:当第一个和第二个发生变化时,将调用get方法更新full的值。

  set 方法:修改full的值时,调用set方法,val是full的最新值。

  

1.2、计算属性缓存

  我们通过方法,拼接数据,也可以实现该效果,代码如下。

  div {{ full() }} /div

  data(){

  返回{

  第一:“美”,

  第二:“姐姐”

  }

  },

  方法:{

  完整(){

  返回this.first this.second

  }

  },

  在一个页面中,数据可能会被多次使用。我们将computed和method这两种方法放在一起,并在页面中多次引用这些数据。下面我们来试试效果。

  差异

  计算的计算值:

  { {完整}} { {完整} } { {完整} } { {完整} } { {完整} }

  /div

  差异

  方法计算值:

  { {完整}} { {完整} } { {完整} } { {完整} } { {完整} }

  /div

  data(){

  返回{

  第一:“美”,

  第二:“姐姐”

  }

  },

  计算值:{

  full:function(){

  console.log(computed )

  返回this.first this.second

  }

  },

  方法:{

  fullt(){

  Console.log(“方法”)

  返回this.first this.second

  }

  }

  运行结果为:

  根据结果不难发现,根据方法得到的数据在使用几次后需要重新计算几次,但是计算出来的属性并没有根据其响应的依赖关系进行缓存,然后在依赖属性的值发生变化时会重新计算。由于计算量少,它具有较高的性能。

  

二、watch介绍

  就是监控watchvue实例上的数据变化,通俗地说就是检测数据中声明的数据。您不仅可以监视简单的数据,还可以监视对象或对象属性。

  Demo1:监控简单数据

  输入v-model=first br

  data(){

  返回{

  第一:“美”,

  }

  },

  观察:{

  first( newVal,oldVal ){

  console.log的最新值( newval ,newval)//first

  Console.log (oldval ,old val)//第一个先前值

  }

  },

  //修改first的值时,会立即打印最新的值。

  Demo2:监控对象

  听对象的时候,需要用深度听。

  输入v-model=per.name

  data(){

  返回{

  per:{

  姓名:“千千”,

  年龄:“18岁”

  }

  }

  },

  观察:{

  per:{

  处理程序(oldVal,newVal){

  console.log(newVal ,newVal)

  console.log(oldVal ,oldVal)

  },

  深:真的,

  }

  },

  修改per.name时,发现newVal和oldVal的值是一样的,因为它们存储的指针指向同一个地方。所以深度监控虽然可以监控对象的变化,但是无法监控哪个属性发生了变化。

  Demo3:监听对象的单个属性

  //方法一:直接引用对象的属性

  输入v-model=per.name

  data(){

  返回{

  per:{

  姓名:“千千”,

  年龄:“18岁”

  }

  }

  },

  观察:{

   per.name:function(newVal,oldVal){

  console.log(newVal-,newVal)

  console.log(oldVal-,oldVal)

  }

  },

  也可以借助 computed 作为中间转换,如下:

  //方法二:借助于computed

  输入v-model=per.name

  data(){

  返回{

  per:{

  姓名:“千千”,

  年龄:“18岁”

  }

  }

  },

  观察:{

  perName(){

  Console.log(“名称已更改”)

  }

  },

  计算值:{

  perName:function(){

  返回this.per.name

  }

  },

  Demo4:监听props组件传递的值

  道具:{

  字符串

  },

  //不要使用立即

  观察:{

  mm(newV,oldV){

  console.log(newV ,newV)

  console.log(oldV ,oldV)

  }

  }

  //立即使用

  观察:{

  嗯:{

  即时:真的,

  处理器(新的,旧的){

  console.log(newV ,newV)

  console.log(oldV ,oldV)

  }

  }

  不使用immediate时,第一次加载页面时,不会执行watch监控的以mm为单位的打印。

  使用immediate时,结果也会在第一次加载时打印出来:newV 11 oldV undefined。

  immediate的主要作用是当一个组件被加载时,回调函数会被立即触发。

  

三、两者区别

  

3.1、对于 computed

  computed监视的数据未在data中声明。

  Computed不支持异步。当computed中存在异步操作时,不可能监视数据更改。

  Computed有缓存,页面被重新呈现。值不变时,直接返回之前的计算结果,无需重新计算。

  如果一个属性是由其他属性计算出来的,那么这个属性依赖于其他属性,一般使用computed。

  当计算的计算属性值是函数时,默认情况下使用get方法。如果属性值是属性值,则该属性有一个get和set方法,当数据发生变化时将调用set方法。

  计算值:{

  //属性值是一个函数

  perName:function(){

  返回this.per.name

  },

  //属性值就是属性值

  满:{

  get(){ },

  set(val){ }

  }

  },

  

3.2、对于 watch

  被监控的数据必须在data或data in props中声明。

  支持异步操作

  没有缓存。重新呈现页面时,会在值不变的情况下执行。

  当属性的值改变时,需要执行相应的操作。

  当监控数据发生变化时,会触发其他操作。该函数有两个参数:

  立即:组件加载立即触发回调函数deep:深度监控,主要针对复杂数据。例如,如果在监视对象时添加深度监视,任何属性值更改都会触发它。注意:添加深度监听对象后,输出的新旧值相同。

  重新呈现计算后的页面时,不会重复计算,但观察器会重新计算,因此计算出的性能更高。

  

四、应用场景

  当需要数值计算并依赖于其他数据时,应该使用Computed,因为它可以利用computed的缓存功能来避免每次获得值时都要重新计算。

  当数据更改时需要执行异步操作或开销较大的操作时,应该使用Watch。computed不支持异步。如果需要限制操作的频率,可以使用computed作为中间状态。

  总结:

  关于分析Vue的computed和watch的区别的这篇文章到此为止。有关Vue的computed和watch之间的差异的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

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

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