Chapter 07 watch侦听器

2024-08-30 22:20
文章标签 07 watch 侦听器 chapter

本文主要是介绍Chapter 07 watch侦听器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

欢迎大家订阅【Vue2+Vue3】入门到实践 专栏,开启你的 Vue 学习之旅!

文章目录

  • 前言
  • 一、基本用法
  • 二、深度侦听


前言

在 Vue 中,watch 侦听器是一个非常实用的工具,用于处理自定义数据的变化。本文详细讲解了 watch 侦听器的基本用法、深度侦听和常见应用场景。

一、基本用法

①定义
watch 侦听器用于观察 Vue 实例上的数据变更。当被观察的数据属性发生变化时,相应的回调函数会被触发,从而执行相应的业务逻辑。

②应用场景

  • 异步请求:当数据变化时,可发起新的 API 请求。
  • 表单处理:及时响应用户输入变化,进行表单验证或自动保存。
  • 复杂数据结构处理:监控嵌套对象或数组的变化,执行相应的逻辑。

③基本语法
写法一:监测简单数据属性

watch:{数据属性名(newValue,oldValue){一些业务逻辑/异步操作}
}

【详解】

  • newValue:变化后的值。当被观察的 数据属性名 数据发生变化时,新的值会传递给这个 newValue 参数。
  • oldValue:变化前的值。当 数据属性名 的值改变时,可用这个参数来获取到变化之前的值。
  • 回调函数体:在 {} 内部的内容是要执行的业务逻辑或异步操作。当 数据属性名 的值发生变化时,将会执行这个回调函数。

【示例】

watch:{count(newValue,oldValue){一些业务逻辑/异步操作}
}

写法二:监测对象属性

watch:{'对象.属性名'(newValue,oldValue){一些业务逻辑/异步操作}
}

【示例】

watch:{'user.name'(newValue,oldValue){一些业务逻辑/异步操作}
}

【示例】

<!DOCTYPE html>  
<html lang="en">  
<head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>watch侦听器</title>  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>  
</head>  
<body>  <div id="app">  <p>总数: {{ count }}</p>  <button @click="increment">加1</button>  </div>  <script>  new Vue({  el: '#app',  data() {  return {  count: 0 // 初始化 count  };  },  methods: {  increment() {  this.count += 1; // 增加 count 值  }  },  watch: {  count(newValue, oldValue) {  console.log(`Count changed from ${oldValue} to ${newValue}`);  }  }  });  </script>  
</body>  
</html>

运行结果:
在这里插入图片描述
点击“加1”按钮后,控制台输出“Count changed from 0 to 1”
在这里插入图片描述

二、深度侦听

如果需要监听一个对象或数组的内部变化,可以使用深度侦听。
基本语法:

watch:{数据属性名:{deep:true,   //深度监视(针对复杂类型)immediate:true,   //是否立刻执行一次handlerhandler(newValue){console.log(newValue)}}
}
  • deep:一个布尔值参数,如果设置为 true ,表示要对复杂类型(如对象或数组)进行深度监视,监视不仅限于对象或数组的引用变化,还监视其内部属性的变化。
  • immediate:一个布尔值参数,如果设置为 true,则在组件创建时立即执行一次回调函数(handler),可在数据初始化时就获取到当前的值,而不是等待数据改变时再执行。
  • handler(newValue):监视器的回调函数,当被监视的变量发生变化时,执行此方法

【示例】

<!DOCTYPE html>  
<html lang="en">  
<head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>watch侦听器</title>  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>  
</head>  
<body>  <div id="app">  <h2>User Information:</h2>  <p>姓名: {{ user.name }}</p>  <p>年龄: {{ user.age }}</p>  <button @click="updateUser">更新用户</button>    </div>  <script>  new Vue({  el: '#app',  data() {  return {  user: {  name: 'Alice',  age: 25  }  };  },  methods: {  updateUser() {  this.user.name = 'Bob'; // 更新用户名称  this.user.age += 1;     // 增加用户年龄  }  },  watch: {  user: {  deep: true, // 深度监视  handler(newValue) {  console.log('User data changed:', newValue);  }  }  }  });  </script>  
</body>  
</html>

运行结果:
在这里插入图片描述
点击“更新用户”后:
在这里插入图片描述

这篇关于Chapter 07 watch侦听器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1122090

相关文章

07 v-if和v-show使用和区别

划重点: v-ifv-show 小葱拌豆腐 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="

Chapter 13 普通组件的注册使用

欢迎大家订阅【Vue2+Vue3】入门到实践 专栏,开启你的 Vue 学习之旅! 文章目录 前言一、组件创建二、局部注册三、全局注册 前言 在 Vue.js 中,组件是构建应用程序的基本单元。本章详细讲解了注册和使用 Vue 的普通组件的两种方式:局部注册和全局注册。 本篇文章参考黑马程序员 一、组件创建 ①定义 Vue 组件是一种具有特定功能的 Vue 实

Chapter 10 Stability and Frequency Compensation

Chapter 10 Stability and Frequency Compensation Chapter 8介绍了负反馈, 这一章介绍稳定性, 如果设计不好, 负反馈系统是要发生震荡的. 首先我们学习理解稳定判断标准和条件, 然后学习频率补偿, 介绍适用于不同运放的补偿方式, 同时介绍不同补偿对两级运放slew rate的影响, 最后介绍Nyquist’s判断标准 10.1 Gener

GDB watch starti i files

watch break starti 在程序的最初开始运行的位置处断下来 ​​ i files 查看程序及加载的 so 的 sections ​​

java基础总结07-面向对象3(this关键字)

this是一个引用,它指向自身的这个对象。 看内存分析图 假设我们在堆内存new了一个对象,在这个对象里面你想象着他有一个引用this,this指向这个对象自己,所以这就是this,这个new出来的对象名字是什么,我们不知道,不知道也没关系,因为这并不影响这个对象在内存里面的存在,这个对象只要在内存中存在,他就一定有一个引用this。 看下面的例子分析: package cn.ga

【SpringMVC学习07】SpringMVC与前台的json数据交互

json数据格式在接口调用中、html页面中比较常用,json格式比较简单,解析也比较方便,所以使用很普遍。在springmvc中,也支持对json数据的解析和转换,这篇文章主要总结一下springmvc中如何和前台交互json数据。 1. 两种交互形式  springmvc和前台交互主要有两种形式,如下图所示: 可以看出,前台传过来的方式有两种,一种是传json格式的数据过来,另一种

周末总结(2024/09/07)

工作 人际关系核心实践: `要学会随时回应别人的善意,执行时间控制在5分钟以内 坚持每天早会打招呼 遇到接不住的话题时拉低自己,抬高别人(无阴阳气息) 朋友圈点赞控制在5min以内,职场社交不要放在5min以外 职场的人际关系在面对利益冲突是直接质疑,要快准狠,不要内耗、 回复消息要控制在30mins之内,一定要及时回复`` 工作上的要点 现状(已经提了离职,last day在9月20号)

2024.09.07【读书笔记】| SMRTLink工具对PB组装疑难解答

在使用SMRT Link的pb_assembly_hifi命令进行组装分析时,可以参考以下步骤和信息: 使用pbcromwell show-workflow-details pb_assembly_hifi命令查看该工作流的详细信息。这将帮助你了解所需的输入参数和可选输入参数。 根据工作流的要求,你需要准备相应的输入文件。例如,对于单样本基因组组装,需要CCS(连续测序)的fastq文件路径作

【LeetCode】07.整数反转

题目要求 解题思路 这道题的难点在于怎么判断越界,我们无法直接与最大值或最小值比较,但是由于每一次我们的ret都需要乘10这个特性来使用ret与最大值或最小值除10进行比较 代码实现 class Solution {public:int reverse(int x) {int ret=0;while(x){//处理越界情况if(ret<INT_MIN/10||ret>INT_MAX

【大数据Java基础-JAVA 面向对象07】类成员(二)类结构 方法(四)递归方法

1.定义: 递归方法:一个方法体内调用它自身。 2.如何理解递归方法? > 方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。 > 递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死循环。 3.举例: // 例1:计算1-n之间所自然数的和 public int getSum(int n) {// 3if (n == 1) {return 1;}