VUE3中watch和watchEffect的用法

2023-05-16

watch和watchEffect都是监听器,但在写法和使用上有所区别。

watch在监听 ref 类型时和监听reactive类型时watch函数的写发有所不一样。
watch在监听 ref 类型时:

<script>
import {ref, watch} from 'vue'
export default {
    setup() { 
        const state = ref(0)

        watch(state, (newValue, oldValue) => {
          console.log(`原值为${oldValue}`)
          console.log(`新值为${newValue}`)
          /* 1秒后打印结果:
                  原值为0
                  新值为1
          */
        })

        // 1秒后将state值+1
        setTimeout(() => {
          state.value ++
        }, 1000)
    }
}
</script>

watch在监听 reactive类型时:

<script>
import {reactive, watch} from 'vue'
export default {
    setup() { 
        const state = reactive({count: 0})

        watch(() => state.count, (newValue, oldValue) => {
          console.log(`原值为${oldValue}`)
          console.log(`新值为${newValue}`)
          /* 1秒后打印结果:
                  原值为0
                  新值为1
          */
        })

        // 1秒后将state.count的值+1
        setTimeout(() => {
          state.count ++
        }, 1000)
    }
}
</script>

watchEffect 它与 watch 的区别主要有以下几点:

  1. 不需要手动传入依赖

  2. 每次初始化时会执行一次回调函数来自动获取依赖

  3. 无法获取到原值,只能得到变化后的值

根据以上特征,我们可以自行选择使用哪一个监听器
另:watch和watchEffect监听器在同一个页面中都可以使用多次,对于分别监听多个变量的时候

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

VUE3中watch和watchEffect的用法 的相关文章

  • vue3知识点:setup

    文章目录 二 常用 Composition API 1 拉开序幕的setup setup的两个注意点 本人其他相关文章链接 二 常用 Composition API 问题 啥叫 组合式API 答案 请看官方文档 https v3 cn vu
  • vue3.2 对el-table 树型结构数据的处理(干货)

    vue3 2 对el table 树型结构数据的处理 干货 将偏平数据转为树状结构的数据 封装了两种方法 将一维数组处理成带children的el tree树状数据结构 第一种方法 使用递归的方式处理偏平化数据 Method 使用递归的方式
  • Vue3.0 PC端滑块拼图验证,配合后端验证

    Vue3 0 PC端滑块拼图验证 配合后端验证 简介 最近因为产品需要实现一个滑块拼图验证 而且需要配合后端进行验证 不想接入第三方SDK 所以自己手写了一个 主要是配合element plus 实现UI大致框架 背景图片和拼图都是通过后端
  • Vue3+TypeScript 完整项目上手教程

    转自 Vue3拥抱TypeScript的正确姿势 https juejin im post 6875713523968802829 一个完整的Vue3 Ts项目 支持 vue和 tsx写法 项目地址 https github com vin
  • electron-vue2 项目初始化

    不要使用网上或者 github 的模板初始化项目 直接上代码 安装 vuecli 脚手架 npm update vue cli 初始化 project name 项目 vue create project name 进入项目 cd proj
  • vue.js -- 条件渲染

    目录 条件渲染 v if的用法 v if v else的用法 v if v else if v else的用法 v show的用法 v if 和 v show 的区别 条件渲染 v if的用法 代码演示
  • vue3配置eslint 出现问题

    vue3配置eslint 出现问题 标题必须使用导入来加载 ES 模块 ESlint Error Must use import to load ES Module 加上这一行即可
  • vue3组件之间通信(三)——爷孙组件传递属性和方法

    文章目录 1 setup函数传递属性和方法 attrs 1 代码 2 主要代码和详细讲解 3 注意点 2 script setup 语法糖传递属性和方法 1 代码 2 主要代码和详细讲解 3 注意点 前言 爷孙组件使用prop一层一层传值和
  • Vue3 从入门到放弃 (第二篇.创建第一个Web应用)

    上一篇讲到了 Vue3的一些前期准备和环境配置 Vue3 从入门到放弃 第一篇 环境准备 Meta Qing的博客 CSDN博客 今天我们来讲讲 项目结构以及各个文件介绍 并且创建我们第一个WEB应用 我们继续上一篇 创建完工程结构 目录介
  • vue3知识点:Suspense组件

    文章目录 五 新的组件 3 Suspense 案例 完整代码 本人其他相关文章链接 五 新的组件 3 Suspense 等待异步组件时渲染一些额外内容 让应用有更好的用户体验 使用步骤 第1步 异步引入组件 import defineAsy
  • vue3+ts实现todolist功能

    先看一下实现效果 可以看到内部实现的内容有enter输入 单项删除 全选 以及删除选中项等功能 具体在实现前需要常见有ts的vue3项目 项目创建 具体项目创建 就是 vue create 项目名称 在创建后 选择的时候有vue2和vue3
  • vue3中实现音频播放器APlayer

    前言 vue2的时候 分享了一个很好用的插件是vue aplayer 但是他是不支持vue3的 这里分享vue3使用APlayer来实现一个播放器的方法 实现效果 官方 git地址 点我 api地址 点我 实现步骤 1 安装 npm npm
  • 公司后台管理系统搭建(Vue3+Vite+Element Plus+TypeScript+Pinia)

    前言 此次项目搭建选用 Vue3 Vite 并使用 pnpm 管理依赖包 本文将从下载到项目创建记录项目全过程 一 项目搭建 1 使用 npm 下载 pnpm 使用 pnpm 依赖包将被存放在一个统一的位置 因此可以节省大量的硬盘空间以及提
  • vue3使用babel-plugin-import按需引入element-plus

    vue3使用babel plugin import按需引入element plus 2022年6月13日更新 用babel plugin import按需引入element plus会有问题 用官方推荐的方式真香了 以下是链接 https
  • 在 XCode 6 中如何设置观察点而不停止执行?

    您可以按照以下步骤轻松在 XCode 中设置观察点 顺便说一句 如果有更简单的方法 我想知道 运行你的程序 在使用变量的代码中设置断点 到达断点时 右键单击变量并选择 Watch nameOfTheVariable 继续执行 唯一的问题是每
  • element中表格组件的row-class-name和class-name属性的使用以及无效处理

    1 这两个属性的使用 row class name用在el table标签上 class name用在el table column标签上 两个属性即可绑定类名也可绑定函数
  • Node.js 监听 MongoDB 变化

    Node js 有没有办法监听 MongoDB 集合中特定数据的更改 并在发生更改时触发事件 嗯 这是一个老问题 但我也在为同样的事情而苦苦挣扎 我发现了一些花絮帮助我构建了一个解决方案 并且我已将其作为库发布 https github c
  • 错误:EMFILE:打开的文件太多,请注意,除非我使用 sudo

    描述 最近我遇到了一个问题 我无法奔跑yarn start in element web目录 我得到这些errors https pastebin ubuntu com p 93v6Yx58DT 原本我以为这与element web本身所以
  • 当私有成员变量更改值时,如何停止 Visual Studio 调试器中的执行?

    假设我的类有一个名为 count 的私有整数变量 我已经在代码中遇到了断点 现在 在我按 继续 之前 我想让调试器在 count 获得分配给它的新值时停止 除了将 count 提升到字段并在字段的 set 方法上设置断点之外 还有其他方法吗
  • CIFIlter 是否有替代方案可以在 watch os 6 中生成二维码

    我正在开发一个独立于手表的应用程序 我想在 watchkit 上生成二维码 但是由于 coreImage 不能与 watchkit 一起使用 我们还有其他方法可以做到这一点吗 Thanks 我使用支持 watchos 的库 例如EFQRCo

随机推荐