当前位置: 首页 > news >正文

watch和computed的使用及区别

一、watch侦听器

watch侦听器允许开发者监听数据的变化,从而针对数据的变化做特定的操作。

immediate选项

默认情况下,组件在初次加载完毕后不会调用watch侦听器。如果想让watch侦听器立即被调用,则需使用immediate选项。

deep选项

当watch侦听的是一个对象,如果对象中的属性值发生了变化,则无法被监听到。需要使用deep选项

监听对象单个属性的变化

<template><input type="text" v-model.trim="msg"><input type="text" v-model.trim="info.msg"><input type="text" v-model.trim="info.value">
</template>
<script>
export default {data(){return{msg:'zs',info:{msg:'',value:''}}},watch:{//简写,用于基本的 watch 需求。不支持更多配置选项,如 immediate 和 deep。// msg(newVal,oldVal){//     console.log('newVal,oldVal', newVal,oldVal);// },msg:{handler(newVal,oldVal){console.log('newVal,oldVal', newVal,oldVal);},immediate:true},info:{handler(newVal,oldVal){console.log('深度监听对象属性newVal,oldVal', newVal,oldVal);},immediate:true,deep:true},'info.msg':{handler(newVal,oldVal){console.log('监听单个属性newVal,oldVal', newVal,oldVal);},immediate:true,deep:true}}
}
</script>

二、计算属性computed


计算属性本质上是一个function函数,可以监听data中数据的变化,并return一个计算后的值,供组件渲染dom时使用。

计算属性会缓存计算的结果,只有在计算属性的依赖项发生变化时,才会重新计算。

计算属性只能当作普通数据项使用,不能当作方法调用(不能使用括号调用)。


<template><div><input type="text" v-model.number="num"></div><div>{{ plus }}</div>
</template>
<script>export default {name:'demo',data(){return{num:111}},computed:{plus(){return  this.num*2}}}
</script>

三、计算属性和侦听器的区别

应用场景不同:

计算属性侧重于监听多个值的变化,最终计算并返回一个新值

侦听器侧重于监听单个数据的变化,最终执行特定的业务处理,不需要有任何返回值

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Unity3D 小案例 像素贪吃蛇 02 蛇的觅食
  • 数据增强又突破了!升级版“双杀”两大顶会,实现无痛涨点
  • Mybatis批量操作
  • CISP备考题库(八)
  • JavaScript match() 方法
  • 如何在Android上实现RTSP服务器
  • 【案例71】配置https之后 IE打不开登陆页面 Uclient没有问题
  • JS日期转化指定格式,获取月/周日期区间
  • Spring Boot入门:构建你的首个Spring Boot应用
  • Laya2.x出包alipay小游戏
  • 数据恢复免费版工具大比拼,哪款才是你的“救星”?
  • Linux运维篇-tigervnc工具的使用
  • 机器学习特征-学习篇
  • rtems 5.3 qemu realview_pbx_a9 环境搭建:生成 rtems arm 工具链
  • Maven下载安装
  • Computed property XXX was assigned to but it has no setter
  • JAVA SE 6 GC调优笔记
  • Java比较器对数组,集合排序
  • MySQL QA
  • Python学习笔记 字符串拼接
  • QQ浏览器x5内核的兼容性问题
  • scala基础语法(二)
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Vue2 SSR 的优化之旅
  • Vue全家桶实现一个Web App
  • XForms - 更强大的Form
  • 阿里云前端周刊 - 第 26 期
  • 对象管理器(defineProperty)学习笔记
  • 二维平面内的碰撞检测【一】
  • 浮动相关
  • 复习Javascript专题(四):js中的深浅拷贝
  • 高度不固定时垂直居中
  • 基于 Babel 的 npm 包最小化设置
  • 深度学习入门:10门免费线上课程推荐
  • 数组的操作
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 从如何停掉 Promise 链说起
  • 选择阿里云数据库HBase版十大理由
  • ​Python 3 新特性:类型注解
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #if和#ifdef区别
  • #预处理和函数的对比以及条件编译
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (libusb) usb口自动刷新
  • (TOJ2804)Even? Odd?
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)换源+apt-get基础配置+搜狗拼音
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (实战篇)如何缓存数据
  • (四)JPA - JQPL 实现增删改查
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)Sublime Text3配置Lua运行环境