watch

结论1:

watch需要侦听特定的数据源,可以是一个也可以是多个,在页面第一次加载时不运行函数,只有当监听的数据源改变时,才会运行此函数

结论2

watch监听一个对象的属性,首先监听的值要以函数返回值的形式进行传递监听,不同于vue2形式的监听,如下为对象属性5秒后改变,监听函数打印

结论3

监听多个数据源,是把需要监听的参数放在watch函数的数组中,但是如果是监听多个数据源的话,如果多个数据源同时改变的话,只触发一次监听函数,如下图所示

这是是两个数据源同时发生改变,但是watch函数只是触发了一次

watchEffect

结论1

vue官方文档 为了根据响应式状态自动应用和重新应用副作用,我们可以使用 watchEffect 函数。它立即执行传入的一个函数,同时响应式追踪其依赖,并在其依赖变更时重新运行该函数。
可以看出 watchEffect函数不需要传入一个数据源,只需要传入一个函数,在函数中使用到的响应式数据,vue都会追踪依赖,当数据改变时,watchEffect函数会再次运行,并且watchEffect在页面第一次加载的时候就会运行

验证 结论1

结论2 watchEffect 监听多个数据源

监听对象,无法完成监听

监听对象属性,可以完成

结论3 watchEffect 停止监听
const stop= watchEffect(()=>{})stop()

watch 和 watchEffect 的区别

  1. watch是惰性的,页面第一次加载时不触发watch函数,只有监听的数据发生变化时,才会触发watch函数
  2. watch可以以数组的形式监听多个参数,如果多个数据同时发生改变,watch只触发一次
  3. watch监听reactive数据时,是以 ()=>a 这个形式,目的是监听数据的getter函数,对于ref定义的数据,可以直接监听
  4. watch可以获取监听的数据的新值和旧值
  5. watchEffect 函数,在页面第一次加载时就会触发,并且会一直监听追踪内部使用的响应式数据,只要追踪的响应式数据发生变化,watchEffect 都会运行
  6. watchEffect 也可以监听多个参数,只是不能监听对象,因为他无法监测对象内部的变化,可能是watchEffect 无法实现深度监听吧(具体原因还不清楚)

仅记录平常学习

vue3中的watch和watchEffect相关推荐

  1. web前端培训分享:使用Dplayer实现Vue3中的视频及弹幕播放

    Dplayer是一款上手简单,功能强大的HTML5视频播放器,我们可以使用它,快速在普通HTML.Vue.React中实现视频播放的功能需求.Dplayer同时也提供了目前各大视频站都在使用的弹幕功能 ...

  2. 中input怎么接受后台传值_[vue3]如何在vue3中优雅地使用vmodel?

    Vue中的数据绑定 绑定数据有三种方式: 插值,也就是{{name}}的形式,以文本的形式和实例data中对应的属性进行绑定 v-bind v-model v-bind eg:v-bind:class ...

  3. Webpack的代码分包Vue3中定义异步组件分包refs的使用

    一.默认的打包过程: 默认情况下,在构建整个组件树的过程中,因为组件和组件之间是通过模块化直接依赖的,那么webpack在打包时就会将组件模块打包到一起(比如一个app.js文件中): 这个时候随着项 ...

  4. vue3中v-model的重大更新

    一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件 Vue.component('custom-input', {props: ['value'],te ...

  5. vue3 中使用动画技术

    vue3 中使用动画技术 作者: jcLee95 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.net/qq_28550263?spm=1001.21 ...

  6. Vue3中的父子、子父组件通信

    Vue3中的父子.子父组件通信方式总结 李俊才的CSDN博客 CSDN用户名:jcLee95 邮箱:291148484@163.com 1. 父组件 => 子组件 | 使用props 父组件(分 ...

  7. vue3中 v-md-editor 编辑器的基本使用分享

    vue3中 v-md-editor 编辑器的基本使用分享 安装 (2.3.15以上) # npm npm install @kangc/v-md-editor -S # yarn yarn add @ ...

  8. vue3中的provide/inject(提供/注入)

    vue3中的provide/inject(提供注入) 在说provide/inject先说一下prop逐级穿透问题. 通常我们从父组件向子组件传递数据时,会用到props.对于只需要传递一层或二层时还 ...

  9. 在vue2、vue3中基于Three.js使用多张全方位照片拼接全景vr效果

    在vue2.vue3中基于Three.js使用多张全方位照片拼接全景vr效果 Vue3 代码如下(示例): <template><div class="Create&quo ...

最新文章

  1. JavaScript(六)函数
  2. C++——包装器std::function与绑定器std::bind
  3. python中mode_python中的model模板中的数据类型
  4. 华为鸿蒙系统智能手机_华为鸿蒙2.0支持设备清单:真正的国产机系统,你的机型支持吗...
  5. element-ui + vue + node.js 与 服务器 Python 应用的跨域问题
  6. python3num='0123456789,num「:6:-1」=gt; '987'?「1:6:-1」为空
  7. elasticsearch不能使用root启动问题解决
  8. python达梦数据库_Python 编程可以访问达梦数据吗?
  9. bcp 不能调用where 子句_MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!
  10. mysql与oracle链接超时_数据库连接超时问题(求解)
  11. 锐界机器人_2019款锐界智能家居远程控制使用介绍
  12. Linux内核分析 - 网络[二]:网卡驱动接收报文
  13. Ubuntu系统安装vmwaretools时the path is not a valid path to the 3.13
  14. 织物印花疵点专用术语大全
  15. Python的pyhanlp库使用(自然语言识别、姓名)
  16. 计算机软件主要有哪4中,系统软件通常包括哪四个部分
  17. 计算机声卡原理,什么是电脑声卡 电脑声卡的工作原理
  18. python条形码识别_使用Python和OpenCV在视频中实时监测条形码
  19. 北京互联网创业者比上海广州加起来还多!(多图)
  20. 教你用 Python 快速获取行业板块股,辅助价值投资!

热门文章

  1. 现在的FM电台呀,什么玩艺儿
  2. 极光短信在程序中(JAVA)的使用
  3. 在哪自学python_怎么自学python,大概要多久?
  4. 嵌入式linux之yocto(五)拓展核心镜像
  5. LiveMedia视频平台与第三方国标平台级联对接异常断流
  6. Adobe Reader Acrobat Pro XI在连网下打开几秒后,卡顿并自动退出问题解决措施
  7. VUE-CLI不同版本共存
  8. 关于Navicat和DBeaver的个人使用中问题
  9. jsp190ssm健身俱乐部会员管理系统
  10. 此文件中的某些Unicode字符未能保存在当前代码页中