前言

watch顾名思义,属于vue2.x版本中,监听和观察组件状态变化的钩子函数,常见的应用场景有监听路由变化,以及父组件传递给子组件的props数据的变化等

基本使用

在使用watch的时候,需要在data中生命一个状态,并添加到watch当中进行观察,当发生变化时,watch可以通过默认参数获取最新的值的变化

<li>name值:{{ name }}</li>
<li>{{ nameTip }}</li>
<li>通过异步操作获取的age:{{ age }}</li>
<li><button @click="getUser">修改名字</button></li> let p1 = new Promise((resolve, reject) => {
resolve({ age: "14" });
}); data() {
return {
name: "zhangsan",
nameTip: "name未改变",
};
}, watch: {
name(newVal, oldVal) {
// watch可以监听一些状态发生更改的时候,做一些处理,修改状态,或者异步操作
this.nameTip = "name状态改变了";
this.getData();
},
}, methods: {
getData() {
setTimeout(() => {
this.getAge();
}, 1000);
},
getUser() {
this.name = "lisi";
},
getAge() {
p1.then((res) => {
console.log(res);
this.age = res.age;
});
},
},

当点击修改的时候,name的值会被修改为lisi,watch监听到name的修改之后,可以修改nameTip的文字,进行出发修改别的状态,

我们也可以通过newVal获取name的最新的值,或者oldVal的值进行一些对比和操作

使用promise和定时器模拟当状态变化的时候,请求后台数据并渲染,这是我们在开发过程中,对watch使用的一个比较典型的例子


immediate和deep

immediate:当watch第一次加载或者首次绑定的时候,需要监听和获取data中的状态,那么就可以使用immediate,设置为true,该属性值为布尔值

deep:watch监听的值为对象的时候,可以使用该属性进行监听对象深层次的属性变化,

注意事项:

deep默认是false,使用的时候,需要自行添加deep:true ,deep和immediate的值一样,是布尔值

实例
<li>{{ immediateNameTip }}</li>

data() {
return {
immediateName: "immediateName原始值",
immediateNameTip: "immediateName改变时的提示文字",
};
}, immediateName: {
handler(newVal, oldVal) {
console.log("immediate表示最初监听值得时候,也执行这段代码");
setTimeout(() => {
this.immediateNameTip =
"immediateName添加immediate,初次绑定也会执行";
}, 2000);
},
immediate: true,
deep: true, // 只针对对象的深层次属性变化
},

当设置了immediate为true的时候,首次进来immediateNameTip在定时器执行之后,就会发生更改。

deep这里不再举例子,大家可以自己在实战中去使用和学习。


使用建议

watch可以作为监听路由变化,以及通过异步的方式去获取数据,同时在一些开销比较大的状态监听都有较多的应用场景,还有购物车功能的实现等场景。

关于vue和watch的区别,在个人的博客中持续更新中。以上例子的源码中已开源,后续关于vue的笔记也会继续更新

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

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

vue2.x版本中computed和watch的使用入门详解-watch篇的更多相关文章

  1. vue2.x版本中computed和watch的使用入门详解-computed篇

    前言 在基于vue框架的前端项目开发过程中,只要涉及到稍微复杂一点的业务,我们都会用到computed计算属性这个钩子函数,可以用于一些状态的结合处理和缓存的操作. 基础使用 在computed中,声 ...

  2. vue2.x版本中computed和watch的使用入门详解-关联和区别

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

  3. 在 IntelliJ IDEA 中配置 JSF 开发环境的入门详解

    JSF 作为 JavaEE 官方标准,在了解并掌握其基本开发技术后,对于功能要求较高.业务流程复杂的各种现代 Web 应用程序开发将会成为非常合适且强大的高效率开发利器.JSF 的开发环境搭建涉及到在 ...

  4. vue2.x版本中Object.defineProperty对象属性监听和关联

    前言 在vue2.x版本官方文档中 深入响应式原理 https://cn.vuejs.org/v2/guide/reactivity.html一文的解释当中,Object.defineProperty ...

  5. SVN组成中trunk,branches and tags功能用法详解

    SVN组成中trunk,branches and tags功能用法详解  我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...

  6. opencv中 int main(int argc,char* argv[])详解

    opencv中  int main(int argc,char* argv[])详解 argc是命令行总的参数个数     argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数     ...

  7. CSS中伪类及伪元素用法详解

    CSS中伪类及伪元素用法详解   伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...

  8. UIViewController中各方法调用顺序及功能详解

    UIViewController中各方法调用顺序及功能详解 UIViewController中loadView, viewDidLoad, viewWillUnload, viewDidUnload, ...

  9. 单元测试系列之四:Sonar平台中项目主要指标以及代码坏味道详解

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6766994.html 众所周知Sona ...

随机推荐

  1. netty系列之:让TCP连接快一点,再快一点

    简介 经典的TCP三次握手大家应该很熟悉了,三次握手按道理说应该是最优的方案了,当然这是对于通用的情况来说的.那么在某些特殊的情况下是不是可以提升TCP建立连接的速度呢? 答案是肯定的,这就是今天我们 ...

  2. [LeetCode]1470. 重新排列数组

    给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,...,xn,y1,y2,...,yn] 的格式排列. 请你将数组按 [x1,y1,x2,y2,...,xn,yn] 格式重新排列, ...

  3. Python 中 selenium 库

    目录 selenium 基础语法 一. 环境配置 1. 安装环境 2. 配置参数 3. 常用参数搭配 4. 分浏览器启动 二. 基本语法 1. 元素定位 2. 控制浏览器操作 3. 操作元素的方法 3 ...

  4. 如何搭建老板想要的dashborad管理驾驶舱,这篇文章值得一看!

    随着企业管理向精细化发展和信息化步伐的加快,企业采集到的市场客户及内部管理数据越来越多.越来越趋向于实时,系统大量的信息给企业带来了一个问题:管理者怎么用这些数据才能掌握企业动态,做出及时关键的决策? ...

  5. 通过shell脚本批量操作mysql数据库

    创建建表语句 ============================================= 学生表:Student(Sno,Sname,Ssex,Sage,Sdept) ------(学 ...

  6. 二叉树的N中遍历方式和拓展应用

    (一)创建二叉树,如下图所示,一个标准的二叉树是所有位于根节点的左侧的子节点都是比根节点小的,右侧则都是大于根节点的. public class BinaryNode { public int val ...

  7. 抛弃模板,一种Prompt Learning用于命名实体识别任务的新范式

    原创作者 | 王翔 论文名称: Template-free Prompt Tuning for Few-shot NER 文献链接: https://arxiv.org/abs/2109.13532 ...

  8. Qt:打印输出到控制台,类似C++的cout

    1. #include<qDebug> 2. qDebug<<"Hello,world!"; 补充,如果不是控制台文件,比如是窗口应用程序,需要在pro文件 ...

  9. Python:Python2和3不同print汉字方式

    Python3: 可以直接通过print('你好')输出 Python2: 需在开头加#encoding=UTF-8 不过之前输出的时候即使加了开头一行,也是一些混乱的汉字,一看就知道编码错误,后来我 ...

  10. IIS部署遇到问题(没有相关资源/权限不足无法读取配置文件)及解决方法

    1:找不到web.config,如下图: 解决办法: 点击目录浏览--打开功能--启用(应用),再次浏览解决 2:再次预览出现别的错误500.19,权限不足,如下图: 解决办法:(右键编辑权限或者右上 ...