学习Vue3——watch(侦听器)

news/2024/11/15 2:17:10/

基本用法

watch有三个参数
第一个参数是监听源
第二个参数回调函数cb(newVal,oldVal)
第三个参数一个options配置项

  • 监听单个属性
<template><div>:<input v-model="lastName" type="text" /></div><div>:<input v-model="firstName" type="text" /></div>
</template><script setup lang="ts">
import { ref, watch } from 'vue'
let firstName = ref('三')
let lastName = ref('张')watch(lastName, (newVal, oldVal) => {console.log(newVal, oldVal)
})
</script>
  • 监听多个属性值,用数组
<script setup lang="ts">
import { ref, watch } from 'vue'
let firstName = ref('三')
let lastName = ref('张')watch([lastName, firstName], (newVal, oldVal) => {// 这样输出也会是数组,一一对应关系console.log(newVal, oldVal)
})
</script>
  • 当对象层级过深时,ref包裹的对象需要开启deep深度监听,不然无法监听到,reactive不需要
<template><div>title:<input v-model="message.foo.bar.name" type="text" /></div>
</template><script setup lang="ts">
import { ref, watch } from 'vue'let message = ref({foo: {bar: {name: 'hhh'}}
})watch(message,(newVal, oldVal) => {console.log(newVal, oldVal)},{deep: true}
)
</script>

但是这时监听到的新值与旧值是一样的
在这里插入图片描述
通过设置用函数来获取监听值,可以解决上述问题

<script setup lang="ts">
import { ref, watch } from 'vue'let message = ref({foo: {bar: {name: 'hhh'}}
})watch(() => message.value.foo.bar.name,(newVal, oldVal) => {console.log(newVal, oldVal)})
</script>

options配置项

  • deep
    用于开启深度监听,解决层级过深监听不到

  • immediate
    在侦听器创建时立即触发回调。第一次调用时旧值是 undefined

<script setup lang="ts">
import { ref, watch } from 'vue'let message = ref({foo: {bar: {name: 'hhh'}}
})watch(() => message.value.foo.bar.name,(newVal, oldVal) => {// hhh undefinedconsole.log(newVal, oldVal)},{immediate: true}
)
</script>
  • flush
    • pre — 组件更新之前调用(默认)
    • sync — 同步执行
    • post — 组件更新之后调用

http://www.ppmy.cn/news/637591.html

相关文章

keepalived

keepalived高可用 1. keepalived简介1.1 keepalived是什么&#xff1f;1.2 keepalived的重要功能1.3 keepalived高可用故障转移的原理1.4 keepalived原理1.4.1 keepalived高可用架构图 1.4.2 keepalived工作原理描述 2. keepalived配置文件讲解2.1 keepalived默认配置文件2.2 定…

CentOS 8 安装freePBX 软交换电话软件——筑梦之路

简单介绍&#xff1a; Freepbx是一个集成了Asterisk的工具&#xff0c;提供GUI (graphical user interface)用户图形界面。通过Freepbx可以十分方便的配置各类电话系统。由于Asterisk 包含广泛的 VoIP 协议诸如&#xff1a;SIP, IAX2 和 H.323 等等&#xff0c;所以安装了Free…

1. activiti之工作流介绍

前言 可能很多人对activiti 这个名词是陌生的&#xff0c;但是说到请假审批流程&#xff0c;贷款审批流程&#xff0c;加班申请流程等这些名词&#xff0c;相信大家都不会陌生。那么如果我们要实现这些流程的控制&#xff0c;流转&#xff0c;终止结束&#xff0c;该怎么实现呢…

2021-10-05 linux学习-部署(十二) 之Bind服务程序

Bind服务程序 BIND&#xff08;Berkeley Internet Name Domain&#xff0c;伯克利因特网名称域&#xff09;服务是全球范围内使用最广泛、最安全可靠且高效的域名解析服务程序。 1 安装Bind dnf install -y bind-chroot 在bind服务程序中有下面这3个比较关键的文件 主配置文…

Debian 11 “bullseye” 安装笔记

Debian 11 “bullseye” 安装笔记 请访问原文链接&#xff1a;https://sysin.org/blog/debian-11-install/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者&#xff1a;gc(at)sysin.org&#xff0c;主页&#xff1a;www.sysin.org ISO 下载&#xff1a;…

Linux就该这么学(三)

管道符、重定向与环境变量 一、输出重定向 若不区分标准输出和错误输出&#xff0c;只要命令有输出信息则全部追加写入到文件中。这就要用到&>>操作符了 如下&#xff1a;将ww.txt中的文件内容追加写入到redme.txt文件中&#xff08;若redme.txt不存在&#xff0c;则…

【钓鱼】与【反钓鱼】的技术剖析

本文来自作者 肖志华 在 GitChat 上分享「钓鱼网站与反钓鱼技术剖析&#xff08;圆桌会议&#xff09;」&#xff0c;「阅读原文」查看交流实录 「文末高能」 编辑 | 仓井 钓鱼网站的简介阐述 钓鱼网站通常指伪装成银行及电子商务&#xff0c;窃取用户提交的银行帐号、密码等私…

开虚拟机服务器cpu百分之百应该管,为何我在虚拟机里开游戏CPU使用率90--100

这个病毒早成的原因也是有可能的。给你些资料参考下把。 经常出现CPU占用100%的情况,主要问题可能发生在下面的某些方面: CPU占用率高的九种可能 1、防杀毒软件造成故障 由于新版的KV、金山、瑞星都加入了对网页、插件、邮件的随机监控,无疑增大了系统负担。处理方式:基本上没…