前面两篇介绍了computed和watch的基本使用

两者的区别,继续通过代码实现的方式具体去了解

html

<li>最开始的value值:{{ name }}</li> <li>computed计算后的值:{{ computedName }}</li> <li> 	watch修改后的值:{{ watchName }} 	<input type="text" v-model="watchName" /> </li> <li><button @click="handleNumber">修改名字</button></li> 

JS

data() { 	return { 		name: "zhangsan", 		watchName: "张三", 	}; }, watch: { 	watchName(newVal, oldVal) { 		console.log("旧的值---->", newVal); 		console.log("新的值---->", oldVal); 		console.log("watch下所有的状态都会监听this.name---->", this.name); 		console.log( 			"watch下所有的状态都会监听this.computedName---->", 			this.computedName 		); 		this.watchName = newVal; 	}, }, computed: { 	computedName: function (currentThis) { 		console.log( 			"和计算属性无关的状态发生更改时,不会执行,只要依赖的状态发生更改,缓存才会更新", 			currentThis 		); 		return `依赖于name,:${this.name}`; 	}, }, methods: { 	handleNumber() { 		this.name = "lisi"; 	}, }, 

区别

依赖值: computed依赖于所使用的状态,类似在data中声明的name,
而watch中监听的值不依赖于某个值,只要组件状态发生更改,监听的值就实时获取最新值,
computed的实现使用的是getter和setter获取值,属于同步操作。

使用方法:

  • computed最后需要进行return处理返回值,并且可以使用更深层次的getter和setter,具体参考computed篇
  • watch除了callback回调函数外,还有两个属性值为布尔值的属性,用于首次绑定immediate,以及对对象的深度监听deep
  • 两者相同点就是可以通过方法参数获取新值,结合其他状态处理相关的业务

**补充##

在官方文档中,除了在组件中使用的watch外,官方文档中,还有对于示例中watch的介绍

具体用法可以在官网中:

https://cn.vuejs.org/v2/api/#vm-watch

$watch基础使用--来自官方文档例子

官方文档提示:

注意:在变更 (不是替换) 对象或数组时,旧值将与新值相同,因为它们的引用指向同一个对象/数组。Vue 不会保留变更之前值的副本。

vm.$watch('a.b.c', function (newVal, oldVal) {   // 做点什么 })  // 函数 vm.$watch(   function () {     // 表达式 `this.a + this.b` 每次得出一个不同的结果时     // 处理函数都会被调用。     // 这就像监听一个未被定义的计算属性     return this.a + this.b   },   function (newVal, oldVal) {     // 做点什么   } )   

需要注意的是,如果使用vm.$watch,那么使用unwatch有助于我们取消对某个状态的监听,减少不必要的监听和交互开销

var unwatch = vm.$watch('a', cb) // 之后取消观察 unwatch() 

结尾

花了三个篇幅去介绍watch和computed的使用方法,以及这两个钩子函数的区别,在实际的企业项目开发中,使用的场景和次数较多,所以尽量写的稍微详细一些,同时也将笔记的代码放在了开源仓库,希望对大家在开发vue2.x的项目中有所帮助

文章个人博客地址:vue2.x版本中computed和watch的使用入门详解-关联和区别

欢迎关注公众号:程序猿布欧,不定期更新一些前端入门文章

创作不易,转载请注明出处和作者。

热门文章

1月25日更新22.5M/S,2025年最新高速SSR/Shadowrocket/Clash/V2ray订阅链接免费节点地址分享

这一次的节点更新覆盖了韩国、加拿大、欧洲、美国、香港、新加坡、日本等地区,最高速度可达22.5 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

vue2.x版本中computed和watch的使用入门详解-关联和区别_在线工具

前面两篇介绍了computed和watch的基本使用 watch篇 computed篇 两者的区别,继续通过代码实现的方式具体去了解 html <li>最开始的value值:{{ n

3月9日更新18.9M/S,2025年最新高速Clash/Shadowrocket/V2ray/SSR订阅链接免费节点地址分享

这一次的节点更新覆盖了韩国、新加坡、加拿大、日本、欧洲、美国、香港等地区,最高速度可达18.9 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

开宠物食品店赚钱吗 开宠物食品店赚钱吗现在

摘要: 大家好,今天小编关注到一个比较有意思的话题,就是关于开宠物食品店赚钱吗的问题,于是小编就整理了3个相关介绍开宠物食品店赚钱吗的解答,让我们一起看看吧。宠物用品超市利润怎么样?宠物用

vue axios请求分页器

<template> <div> <el-pagination background layout="total, prev, pager, n

1月19日更新20.8M/S,2025年最新高速V2ray/Clash/Shadowrocket/SSR订阅链接免费节点地址分享

这一次的节点更新覆盖了韩国、香港、欧洲、日本、美国、新加坡、加拿大等地区,最高速度可达20.8 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

猫咪多久打一次驱虫(猫咪多久打一次驱虫比较好)

摘要: 今天给各位分享猫咪多久打一次驱虫的知识,其中也会对猫咪多久打一次驱虫比较好进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览:1、小猫驱虫多久一次.

动物疫苗的种类及特点(动物疫苗的种类及特点是什么)

摘要: 今天给各位分享动物疫苗的种类及特点的知识,其中也会对动物疫苗的种类及特点是什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览:1、动物防疫技术.

狗粮属于什么经营范围(狗粮属于什么商品类目)

摘要: 本篇文章给大家谈谈狗粮属于什么经营范围,以及狗粮属于什么商品类目对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录一览:1、50的米桶可以装30的狗粮吗...

动物医院实践心得体会怎么写范文四年级(动物医院实践个人总结)

摘要: 本篇文章给大家谈谈动物医院实践心得体会怎么写范文四年级,以及动物医院实践个人总结对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录一览:1、医院志愿服务心得体会...

归纳