vue3+vite+ts--watch和watchEffect监听使用

2023-10-28

目录

一、watch的使用方法

二、watchEffect的使用方法

三、watch和watchEffect的区别


一、watch的使用方法

watch(监听的数据,监听数据的函数,监听配置对象(是否立即执行,是否开启深度监听))
watch(data, (newVal, oldVal) => {}, {immediate: true, deep: true})

1.单个监听

let watchDataRef1 = ref<string>('ref数据');
watch(watchDataRef1, (newVal, oldVal) => {
  console.log('newVal---', newVal); //newVal--- 修改的数据1
  console.log('oldVal---', oldVal); //oldVal--- ref数据
});
let watchDataRef1 = ref<string>('ref数据');
watch(()=>watchDataRef1, (newVal, oldVal) => {
  console.log('newVal---', newVal); //newVal--- 修改的数据1
  console.log('oldVal---', oldVal); //oldVal--- ref数据
});

2.监听多个

- 数组的形式返回的也是数组

let watchDataRef1 = ref<string>('ref数据');
let watchDataRef2 = ref<string>('ref数据');
watch([watchDataRef1, watchDataRef2], (newVal, oldVal) => {
  console.log('newVal---', newVal); //newVal--- ['修改的数据1', '修改的数据2']
  console.log('oldVal---', oldVal); //oldVal--- ['ref数据', 'ref数据']
});

 - 写多个watch

let watchDataRef1 = ref<string>('ref数据');
let watchDataRef2 = ref<string>('ref数据');
watch(watchDataRef1, (newVal, oldVal) => {
  console.log('newVal---', newVal); //newVal--- newVal--- 修改的数据1
  console.log('oldVal---', oldVal); //oldVal--- oldVal--- ref数据
});
watch(watchDataRef2, (newVal, oldVal) => {
  console.log('newVal---', newVal); //newVal--- newVal--- 修改的数据2
  console.log('oldVal---', oldVal); //oldVal--- oldVal--- ref数据
});

二、watchEffect的使用方法

- watchEffect刚开始就会立即执行,并且会自动收集依赖,当其中的依赖项发生改变,都会执行回调函数,watchEffect的停止监听

- 数据变化了就会再次执行watchEffect函数

let watchDataRef1 = ref<string>('ref数据');
watchEffect(() => {
  console.log(`变化了${watchDataRef1.value}`);//变化了修改的数据1
});

-  watchEffect接收一个副作用函数onInvalidate与flush

let watchDataRef1 = ref<string>('ref数据');
let stop = watchEffect(
  onInvalidate => {
    console.log(`变化了${watchDataRef1.value}`); //变化了修改的数据1
    onInvalidate(() => {
      console.log('清除副作用函数执行了!');
    });
  },
  {
    //'pre' 在组件更新更新前运行,默认为'pre'
    //'post'会在onBeforeUpdate之后执行 没有会在之前
    //'sync'强制效果始终同步触发。然而,这是低效的,应该很少需要。
    flush: 'sync'
  }
);

- 手动停止watchEffect的监听,需用一个变量来监听在,然后在调用就会关闭监听

let stop = watchEffect(
  onInvalidate => {
    console.log(`变化了${watchDataRef1.value}`); //变化了修改的数据1
    onInvalidate(() => {
      console.log('清除副作用函数执行了!');
    });
  },
  {
    //'pre' 在组件更新更新前运行,默认为'pre'
    //'post'会在onBeforeUpdate之后执行 没有会在之前
    //'sync'强制效果始终同步触发。然而,这是低效的,应该很少需要。
    flush: 'sync'
  }
);
stop();

三、watch和watchEffect的区别

  1. 两者都可监听数据的属性变化
  2. watch 既要指明监视的属性,也要指明监视的回调。 默认是惰性执行,监听源可以是一个具有返回值的 getter 函数,也可以直接是一个 ref
  3. watchEffect 不用指明监视哪个属性,监视的回调中用到哪个属性,那就监视哪个属性。会根据其中的属性,自动监听其变化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3+vite+ts--watch和watchEffect监听使用 的相关文章

  • 无法在地图循环中访问 Axios 调用的值

    我有一个 javascript 对象 其 ID 对应于一组画廊 我使用地图循环遍历它 在每个循环中 我都会进行 axios 调用来获取当前 id 的图库 最后 我需要一个包含所有画廊内容的数组 问题是地图循环完成后我无法访问数据 当我 co
  • zone.js:140未捕获类型错误:无法读取属性“删除”

    我是 kendo ui 的新手 我在小提琴中开发了原型 删除确认窗口在那里工作正常 但是当我集成到我的代码库中时 我收到错误 Cannot read property remove at the line pai to delete rem
  • jQuery JSONP ajax,未设置身份验证标头

    我正在尝试使用以下设置向 google 联系人 API 发出 ajax 请求 ajax url https www opensocial googleusercontent com api people me all dataType js
  • 图表.js.如何更改“标签”数组的字体样式?

    我从 Chart JS 库中获取了一个图表 截屏 https i stack imgur com DnuRq png var ctx document getElementById myChart var data labels HTML
  • 如何正确地将节点从引用传递到上下文?

    我正在尝试将节点从引用传递到上下文 但是因为我在第一次渲染后没有重新渲染 所以传递的节 点是null 我考虑了两种变体 但我认为它们不是最好的 To pass ref代替ref current 但在用例中 我将被迫使用类似的东西contex
  • 用更好的模式替换开关(Javascript)

    我必须升级我的应用程序以根据用户类型和角色属性显示页面 目前 我使用一个简单的 switch 语句来根据用户类型来执行此操作 例如 switch type case a return CONSTANT ONE case b return C
  • 使用 babel env 预设时,展开运算符出现语法错误

    我正在努力 现代化 meern io 入门样板 https github com Hashnode mern starter通过替换巴别塔es2015 and stage 0预设为env 然而 似乎env预设无法识别以下片段client m
  • 解释一下这个令人困惑的 dojo 教程声明语法

    我正在阅读使用的语法道场的声明 http dojotoolkit org documentation tutorials 1 8 declare 用于班级创建 描述很混乱 The declare function is defined in
  • ASP.NET 验证控件和 Javascript 确认框

    我有一个使用 NET 服务器端输入验证控件的页面 此页面还有一个 javascript 确认框 在提交表单时会触发该确认框 当前 当选择 提交 按钮时 会出现 javascript 确认框 一旦确认 就会触发 ASP NET 服务器端验证控
  • 为什么我可以使用 Date 对象进行数学运算? [复制]

    这个问题在这里已经有答案了 当我像这样减去两个日期对象时 const startTime new Date await someAsyncStuff const endTime new Date const elapsedTime endT
  • 如何在单击按钮时清除反应挂钩中的间隔

    我正在用反应钩子构建一个简单的计时器 我有两个按钮启动和重置 当我单击开始按钮时 handleStart 函数工作正常 计时器启动 但我不知道如何在单击重置按钮时重置计时器 这是我的代码 const App gt const timer s
  • NodeJS - 将相对路径转换为绝对路径

    In my 文件系统我的工作目录在这里 C temp a b c d 在 b bb 下有文件 tmp txt C temp a b bb tmp txt 如果我想从工作目录转到该文件 我将使用以下路径 bb tmp txt 如果该文件不存在
  • 如何将React JS状态保存到本地存储中

    我不知道如何将 React js 状态存储到本地存储中 import React Component from react import App css import auth createUserProfileDocument from
  • 是否有跨浏览器的方式在Javascript中设置style.float?

    通常 如果您需要在 JavaScript 中设置样式属性 您可以这样说 element style attribute value 虽然略有不同 但属性名称通常与 HTML 属性名称类似 尽管是驼峰式 对我来说问题是 float 属性不起作
  • 文件缓存:查询字符串与上次修改时间?

    我正在研究缓存网站资源的方法 并注意到大多数与我类似的网站都使用查询字符串来覆盖缓存 例如 css style css v 124942823 后来 我注意到每当我保存 style css 文件时 最后修改的标头都会 更新 使得查询字符串变
  • JS:修改 JS 对象中的值/对

    我正在尝试找出修改对象的最佳方法 而无需三次写出类似的对象 所以我有这三个对象 var object1 start start end end type 1 var object2 start start end end type 2 va
  • 当 Chrome 中嵌套滚动中的数据更改时防止页面滚动

    我在页面中有一个固定大小的元素 带有 溢出 滚动 其内容经常更改 我预计该元素内部发生的更改会影响该元素的滚动 但不会影响页面滚动 但是当这个元素位于页面顶部时 页面本身开始滚动 我怎样才能防止这种情况发生 要重现此行为 我在 chrome
  • chrome 选项卡/窗口中的 window.open 行为

    我有一小段 javascript 旨在打开两个或更多选项卡 这在 FF 和 IE 中工作正常 但 chrome 会在新窗口而不是选项卡中打开第二个窗口 它不依赖于 url 因为我已经尝试过使用两个相同的 url 第一个在选项卡中打开 第二个
  • eventSources 到事件 Json,完整日历

    我正在尝试从 eventSources 获取 json 调用到我的事件 我在 eventSources 中返回的 json 是 title Title Test start 1305841052 当我将此字符串传递到事件中时 它会正确显示日
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您

随机推荐

  • 14C++11多线程编程之Windows临界区和各种互斥量(recursive_mutex,std::timed_mutex,recursive_timed_mutex)

    1 Windows临界区 1 Windows临界区与C 11的mutex的区别 mutex不能多次lock 而Windows的临界区可以多次进入 即EnterCriticalSection 但是进入多少次临界区就需要多次LeaveCriti
  • PlatformIO离线安装终极方法

    PlatformIO IDE core 离线安装终极方法 众所周知 PlatformIO的资源服务器在国外 其资源包和更新包经常出现下载不了而导致PlatformIO Home界面无法启动的情况 这几年 我上的智能硬件课程中使用Platfo
  • 消息队列(MQ)简介

    概念 从字面理解 本质就是队列 FIFO先入先出 只不过队列中存放的是Message而已 是一种跨进程的通信机制 用于上下游传递消息 在互联网架构中 MQ是常见的上下游 逻辑解耦 物理解耦 的消息通信服务 在使用MQ之后 消息发送上只需要依
  • packet capture抓取抖音

    这是一款安卓端的抓包工具 我们打算使用它来抓取抖音 首先得安装好着两款软件 1 配置app 至此 软件可以进行使用 2 打开抖音APP 玩一会抖音 然后打开packet capture 会显示出这里有13条数据 点击有数据的 得到如下 这块
  • Databend 借助对象存储帮你实现降本增效

    本篇文章围绕着 什么是对象存储 当 Databend 遇到对象存储 2022 年 Databend 利用对象存储降本的案例 国内优秀的对象存储产品 基于对象存储创业的产品 什么是对象存储 对象存储是一种可以非结构化存储和管理数据的技术 可以
  • eclipse启动参数

    eclipse 启动参数 arch processor architecture 描述 指定所使用的处理器的类别 举例 eclipse arch x86或eclipse arch sparc application 描述 指定要运行的应用
  • adspower是做什么用的,adspower费用,adspower类似软件有哪些?

    adspower费用 通过价格表 我们可以看出 美元报价表对国内用户不够友好 而且环境数量还是太少了 对于长期做相关业务的朋友 可能远远不够 候鸟浏览器 候鸟浏览器官网 防关联超级指纹浏览器系统工具 费用 候鸟浏览器相对价格更低 包括创建环
  • #if defined() 含义

    文章出处 http www blogjava net tinysun archive 2010 07 27 327215 html 看到内核代码中有很多地方都使用了 if defined 可是却找不到这个东东的定义 主要是define 它和
  • 【C语言】指针进阶(二)

    个人主页 阿然成长日记 点击可跳转 个人专栏 数据结构与算法 C语言进阶 不能则学 不知则问 耻于问人 决无长进 目录 四 数组名详解 1 数组名的理解 2 案例分析1 案例分析2 五 函数指针 1 其声明形式如下所示 2 函数指针的初始化
  • 起亚汽车RFID定位管理系统提升了物流运输效率

    1 应用背景 英国物流提供商Paragon Automotive部署RFID定位管理解决方案跟踪伊明赫姆港口附近的起亚汽车 这些汽车都在这个港口喷漆 存储并运送到其他零售地点 RFID定位管理系统使用了Paragon自己的管理软件 移动及固
  • python怎么获取免费代理IP

    什么是免费代理IP 免费代理IP是指可以免费使用的代理服务器的IP地址 代理服务器充当客户端和目标服务器之间的中间人 通过转发请求和响应来实现网络数据的传输 使用代理IP可以隐藏真实的客户端IP地址 实现匿名访问网络资源 免费代理IP通常由
  • 减轻剪辑工作必备——Python实现让视频自动打码,再也不怕出现少儿不宜的画面了

    我们在观看视频的时候 有时候会出现一些奇怪的马赛克 影响我们的观影体验 那么这些马赛克是如何精确的加上去的呢 有什么python相关报错解答自己不会的 或者源码资料 模块安装 女装大佬精通技巧 都可以来这里 https jq qq com
  • ffmpeg多个流画面合并

    首先这个是两路视频流的合并 要实现将两个视频一左一右同时播放的效果 可以使用FFmpeg的hstack和vstack滤镜来实现 以下是一种常见的方法 ffmpeg i input1 mp4 i input2 mp4 filter compl
  • sed命令详解

    简介 sed是非交互式的编辑器 它不会修改文件 除非使用shell重定向来保存结果 默认情况下 所有的输出行都被打印到屏幕上 sed编辑器逐行处理文件 或输入 并将结果发送到屏幕 具体过程如下 首先sed把当前正在处理的行保存在一个临时缓存
  • 技术人员如何形成差异化竞争力让自己活下去

    随着大的经济环境的影响 我看到很多人开始变得焦虑 技术人员也开始焦虑 其实我也会焦虑 从宏观角度来看 国内很多企业一直走不出国门 难以进一步做增长 导致需求减少 而互联网行业也整体进入稳定期 对新业务不再像以前那样不计成本 导致需要的人也大
  • 如何快速入门深度学习目标检测?

    学习目标 了解目标检测的任务 知道目标检测的常用数据集 知道目标检测算法的评价指标 掌握非极大值NMS算法的应用 了解常用的目标检测算法分类 1 目标检测 目标检测 Object Detection 的任务是找出图像中所有感兴趣的目标 并确
  • 打包jar到maven本地仓库

    有时候时间打包的sdk需要集成到其他工程里面 然后需要把sdk打包到工程的仓库里面 命令如下 mvn install install file Dfile jar所在的路径 DgroupId groupId名字 自己随便取 Dartifac
  • PID算法C语言模拟演示

    由于暂时没有硬件平台 网上找到一篇 用C语言实现PID控制代码 写的非常好 参照其文章 自己也动手实验了一下 下面通过几张 Execl 截屏说明下 Kp Ki Kd 三个参数不同取值时的输出效果 感谢CSDN博主 生活不易到处是坑 的原创文
  • 华为面试算法题

    华为面试算法题1 给定一个n 2的二维数组 表示有n个任务 一个信息是任务能够开始做的时间 另一个信息是任务的结束期限 后者一定大于前者 且数值上都是正数 你作为单线程的人 不能并行处理任务 但是每个任务都只需要一个单位时间完成 你需耍将所
  • vue3+vite+ts--watch和watchEffect监听使用

    目录 一 watch的使用方法 二 watchEffect的使用方法 三 watch和watchEffect的区别 一 watch的使用方法 watch 监听的数据 监听数据的函数 监听配置对象 是否立即执行 是否开启深度监听 watch