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

computed和watch相关

Computed本质是一个具备缓存的watcher,依赖的属性发生变化就会更新视图。 适用于计算比较消耗性能的计算场景。当表达式过于复杂时,在模板中放入过多逻辑会让模板难以维护,可以将复杂的逻辑放入计算属性中处理

computed擅长处理:一个数据受多个数据影响。

computed是计算属性,也就是计算值,它更多用于计算值的场景

computed具有缓存性,computed的值在getter执行后是会缓存的,只有在它依赖的属性值改变之后,下一次获取computed的值时才会重新调用对应的getter来计算

computed适用于计算比较消耗性能的计算场景

<template>{{fullName}}</template>
export default {data(){return {firstName: 'zhang',lastName: 'san',}},computed:{fullName: function(){return this.firstName + ' ' + this.lastName}}
}

watch用于观察和监听页面上的vue实例,如果要在数据变化的同时进行异步操作或者是比较大的开销,那么watch为最佳选择

Watch没有缓存性,更多的是观察的作用,可以监听某些数据执行回调。当我们需要深度监听对象中的属性时,可以打开deep:true选项,这样便会对对象中的每一项进行监听。这样会带来性能问题,优化的话可以使用字符串形式监听,如果没有写到组件中,不要忘记使用unWatch手动注销

watch擅长处理:一个数据影响多个数据。
更多的是「观察」的作用,类似于某些数据的监听回调,用于观察props $emit或者本组件的值,当数据变化时来执行回调进行后续操作
无缓存性,页面重新渲染时值不变化也会执行

<template>{{fullName}}</template>
export default {data(){return {firstName: 'zhang',lastName: 'san',fullName: 'zhang san'}},watch:{firstName(val) {this.fullName = val + ' ' + this.lastName},lastName(val) {this.fullName = this.firstName + ' ' + val}}
}

总结

computed和watch都是基于watcher来实现的

computed属性是具备缓存的,依赖的值不发生变化,对其取值时计算属性方法不会重新执行

watch是监控值的变化,当值发生变化时调用其对应的回调函数

当我们要进行数值计算,而且依赖于其他数据,那么把这个数据设计为computed

如果你需要在某个数据变化时做一些事情,使用watch来观察这个数据变化

回答范例

  1. 计算属性可以从组件数据派生出新数据,最常见的使用方式是设置一个函数,返回计算之后的结果,computed和methods的差异是它具备缓存性,如果依赖项不变时不会重新计算。侦听器可以侦测某个响应式数据的变化并执行副作用,常见用法是传递一个函数,执行副作用,watch没有返回值,但可以执行异步操作等复杂逻辑
  2. 计算属性常用场景是简化行内模板中的复杂表达式,模板中出现太多逻辑会是模板变得臃肿不易维护。侦听器常用场景是状态变化之后做一些额外的DOM操作或者异步操作。选择采用何用方案时首先看是否需要派生出新值,基本能用计算属性实现的方式首选计算属性.
  3. 使用过程中有一些细节,比如计算属性也是可以传递对象,成为既可读又可写的计算属性。watch可以传递对象,设置deep、immediate等选项
  4. vue3中watch选项发生了一些变化,例如不再能侦测一个点操作符之外的字符串形式的表达式; reactivity API中新出现了watch、watchEffect可以完全替代目前的watch选项,且功能更加强大
http://www.lryc.cn/news/247994.html

相关文章:

  • 反思一次效能提升
  • ElasticSearch之cat indices API
  • Composer update 跳过指定依赖
  • @RequestMapping详解:请求映射规则
  • C#中密封类和密封方法
  • Pytorch中的Net.train()和 Net.eval()函数讲解
  • 氪了几百亿,字节游戏停止了“跳动”
  • 进入docker容器
  • C陷阱与缺陷——第5章库函数
  • 【C++上层应用】6. 信号 / 中断
  • 树与二叉树堆:堆的意义
  • 什么时候适合做ui自动化测试?什么时候做接口自动化测试
  • [ABC261E] Many Operations(dp,位运算,打表)
  • 一、爬虫-爬取豆瓣电影案例
  • 4G5G防爆执法记录仪、防爆智能安全帽赋能智慧燃气,可视化巡检巡线,安全生产管控
  • 武汉数字孪生赋能工业制造,加速推进制造业数字化转型
  • 安卓密码框、EditText
  • ROS命令行工具
  • 深入浅出 Golang 中的直接依赖和间接依赖管理
  • 深入Python元编程:了解声明与初始化定制元类
  • [传智杯初赛] 期末考试成绩
  • Linux 常用基本命令
  • 阿里云语雀频繁崩溃,有什么文档管理工具是比较稳定的?
  • 二分查找(折半查找)探究学习
  • Android : 异常记录
  • 西南科技大学电路分析基础实验A1(元件伏安特性测试 )
  • 【Java】泛型的简单使用
  • 注册Zoho Mail邮箱:优势与使用体验
  • 第十四届蓝桥杯大赛国赛模拟题C++卷1
  • 基于UDP的TFTP文件传输