vue watch compute,Computed和watch的区别

  vue watch compute,Computed和watch的区别

  本文主要介绍vue中computed和watch的区别,帮助你更好的理解和使用Vue框架。感兴趣的朋友可以了解一下。

  

计算属性computed:

  支持缓存,只有当依赖数据发生变化时,才会重新计算。

  不支持异步操作。当computed中存在异步操作时,该操作无效,并且无法监控数据变化。

  默认情况下,计算的属性值被缓存,并且计算的属性基于它们的响应依赖关系被缓存,即基于数据中声明的数据或父组件传递的props中的数据的计算值。

  如果一个属性是由其他属性计算出来的,这个属性依赖于其他属性,而且是多对一或者一对一,一般是计算出来的。

  如果计算属性的属性值是函数,默认取get方法;函数的返回值是属性的属性值;在computed中,所有属性都有一个get方法和一个set方法。当数据改变时,调用set方法。

  var vm=new Vue({

  埃尔: #app ,

  数据:{

  消息:“你好”

  },

  模板:` 1

  /div I是原值: {{{ message }}/p p pI是计算属性的值: { { Computed message } } /p//Computed可以直接在DOM中使用,不需要调用/div `,

  计算值:{

  //Getter计算消息:计算属性{

  //`this `指向vm实例returnthis.message.split()。反转()。联接(“”)

  }

  }

  })

  结果:

  我是原值:你好

  我是计算属性的值:“olleH”

  如果未使用计算属性,则使用message.split(“”)。反转()。join()会直接写入模板,所以在模板中放入过多的声明性逻辑会使模板本身过重,尤其是在页面中使用大量复杂的逻辑表达式处理数据时,会对页面的可维护性产生很大的影响。

  而且如果计算出来的属性的依赖关系不变,就会变成缓存,计算出来的值不会重新计算。

  因此,如果要通过复杂的逻辑获取数据,建议使用计算属性。

  

侦听属性watch

  不支持缓存,数据变化会直接触发相应的操作。

  手表支持异步;的监控功能接收两个参数,第一个参数是最新值;第二个参数是输入前的值;

  当一个属性发生变化时,需要进行相应的操作;一对多;

  监控数据必须是props中已在数据中声明或由父组件传递的数据。当数据发生变化时,会触发其他操作。该函数有两个参数:

  新Vue({

  数据:{

  n: 0,

  目标

  答:“答”

  }

  },

  模板:` 1

  div @ click= n=1 n1/button button @ click= obj . a= hi obj . a hi /button button @ click= obj= a: a } obj=new object/button/div `,

  观察:{

  n() {

  Console.log(n已更改);

  },

  目标

  处理程序:函数(val,oldVal) {

  Console.log(“对象已更改”)

  },

  Deep: true //该属性设置当任何被拦截对象的属性发生变化时,无论嵌套有多深,都应该执行处理程序的回调},

  目标a :

  处理程序:函数(val,oldVal) {

  Console.log(obj.a已更改)

  },

  Immediate: true //该属性设置在开始监听后立即调用回调函数}

  }

  }).$ mount( # app );

  不应该用arrow函数来定义watcher函数,因为arrow函数没有这个,它的this会继承它的父函数,但是它的父函数是window,导致arrow函数的this指向window而不是Vue实例。

  控制deep是否希望看到此对象中的属性更改。

  立即控制是否在第一次渲染时执行该功能。

  虚拟机的使用。$watch()类似于手表回调。

  Vm。$watch(数据属性名称,fn,{deep:立即:})

  vm。$watch(n ,function(val,newVal){

  Console.log(n已更改);

  },{deep: true,immediate: true})

  

总结

  如果一个数据需要复杂的计算,使用computed。

  如果需要监控一段数据并对其进行处理,请使用watch。

  这就是Vue中computed和watch区别的细节。更多关于Vue中computed和watch的区别,请关注我们的其他相关文章!

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

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