Vue中的watch与computed

news/2024/7/10 3:13:32 标签: vue

原文:https://www.cnblogs.com/jiajialove/p/11327945.html
计算属性computed :
1、支持缓存,只有依赖数据发生改变,才会重新进行计算
2、不支持异步,当computed内有异步操作时无效,无法监听数据的变化
3、computed 属性值会默认走缓存,计算属性是基于它们的响应式依赖进行缓存的,也就是基于data中声明过或者父组件传递的props中的数据通过计算得到的值
4、如果一个属性是由其他属性计算而来的,这个属性依赖其他属性,是一个多对一或者一对一,一般用computed
5、如果computed属性属性值是函数,那么默认会走get方法;函数的返回值就是属性的属性值;在computed中的,属性都有一个get和一个set方法,当数据变化时,调用set方法。
在这里插入图片描述

侦听属性watch:
1、不支持缓存,数据变,直接会触发相应的操作;
2、watch支持异步;
3、监听的函数接收两个参数,第一个参数是最新的值;第二个参数是输入之前的值;
4、当一个属性发生变化时,需要执行对应的操作;一对多;
5、变化时,触发其他操作,函数有两个参数,
  immediate:组件加载立即触发回调函数执行,
  deep: 深度监听,为了发现对象内部值的变化,复杂类型的数据时使用,例如数组中的对象内容的改变,注意监听数组的变动不需要这么做。
  注意:deep无法监听到数组的变动和对象的新增,参考vue数组变异,只有以响应式的方式触发才会被监听到。
在这里插入图片描述
监听的对象也可以写成字符串的形式
在这里插入图片描述
当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。这是和computed最大的区别,请勿滥用。


原文:https://www.cnblogs.com/gunelark/p/8492468.html

看了网上很多资料,对vue的computed讲解自己看的都不是很清晰,今天忙里抽闲,和同事们又闲聊起来,对computed这个属性才有了一个稍微比较清晰的认识,下面的文章有一部分是转自: https://www.w3cplus.com/vue/vue-computed-intro.html © w3cplus.com,

感觉这篇文章上面的例子通俗易懂,所以此处借用了。

自己的理解:

  • computed用来监控自己定义的变量,该变量不在data里面声明,直接在computed里面定义,然后就可以在页面上进行双向数据绑定展示出结果或者用作其他处理;
  • computed比较适合对多个变量或者对象进行处理后返回一个结果值,也就是数多个变量中的某一个值发生了变化则我们监控的这个值也就会发生变化,举例:购物车里面的商品列表和总金额之间的关系,只要商品列表里面的商品数量发生变化,或减少或增多或删除商品,总金额都应该发生变化。这里的这个总金额使用computed属性来进行计算是最好的选择

与watch之间的区别:

  • 刚开始总是傻傻分不清到底在什么时候使用watch,什么时候使用computed。这里大致说一下自己的理解:
  • watch主要用于监控vue实例的变化,它监控的变量当然必须在data里面声明才可以,它可以监控一个变量,也可以是一个对象,但是我们不能类似这样监控,比如:
watch:{
	goodsList.price(newVal,oldVal){
	    //监控商品列表中是商品价格
	}
}

这样会报错。只能监控整个对象或单个变量,如下所示:

data(){
        return {
          example0:"",
          example1:"",
          example2:{
             inner0:1,          
                           innner1:2          
                     }
      }
    },
watch:{
 example0(newVal,oldVal){//监控单个变量
           ……
   },example2(newVal,oldVal){//监控对象
           ……
   }}
  • watch一般用于监控路由、input输入框的值特殊处理等等,它比较适合的场景是一个数据影响多个数据

http://www.niftyadmin.cn/n/1691271.html

相关文章

openlayers3 根据经纬度 自动画框_工作在VHF频段的AIS船舶自动识别系统

海上航行中,船舶之间常常需要掌握彼此之间的动、静态消息,避免船舶在航行过程中发生碰撞事故。因此实现船舶的自动识别是海上航行安全、海上交通管理和航海技术发展的重要问题。一、AIS简介 船舶自动识别系统(AIS)作为一种新型的助航设备,…

class=“el-table__expanded-cell“ 怎么设置样式

class"el-table__expanded-cell"是Element UI中的一个组件,原本组件中的样式不符合现在需要就在页面找到了这个,然后尝试去覆盖它的样式。 F12找到要调的位置 找一下它的上级——父元素 开始覆盖样式 .el-table tr {.el-table__expanded-c…

SQLServerException: 不支持“variant”数据类型

原文:https://my.oschina.net/u/2274625/blog/415100 通过jdbc链接数据上SqlServer数据库,其中单个执行sql是没有问题的,但执行下列的executeQuery方法 // 对象集 ResultSet resultList stm.executeQuery(sb.toString()); 提示错误&#xf…

sqlserver查询所有表名及表备注

原文:https://blog.csdn.net/i_lova_girl/article/details/105509941?utm_termsqlserver%E6%9F%A5%E8%AF%A2%E6%89%80%E6%9C%89%E8%A1%A8%E6%B3%A8%E9%87%8A&utm_mediumdistribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-0-10550994…

pythonselenium框架_基于python+selenium的框架思路

设想:1、使用excel编写用例第一个sheet页为用例概要格式如下:后面的sheet页为具体的用例步骤:实现所有定位信息都与测试代码分离2、读取该excel文件取出关键字等信息,作为关键字的参数,通过反射机制传递给关键字方法去…

sqlserver 获取当前操作的数据库名称

原文:https://www.cnblogs.com/fumj/p/3296062.html Select Name From Master..SysDataBases Where DbId(Select Dbid From Master..SysProcesses Where Spid spid)

kuka机器人码垛编程网盘_kuka机器人循环指令码垛编程探索

kuka机器人循环指令码垛编程探索张宝强【摘要】【摘要】kuka机器人已经广泛地应用到了各行各业中,主要应用与焊接、装配、搬运和码垛等。Kuka机器人有专用的码垛工艺包,本文讲解用一般的指令及循环指令编写6轴kuka机器人码垛程序。本文首先介绍了机器人码…

k8s滚动升级_k8s连载---资源类型之控制器Deployments

Deployment:一个Deployment控制器为Pods和ReplicaSets提供描述性的更新方式。示列:Deployment的定义除了kind的类型区别同RS没区别。那么为什么在有RS的基础上,还要继续产生这样一个新的控制器的概念。其实是一次RS的升级,相比于R…