首页 > 其他分享 >vue3 深度监听用法 watch watchEffect 详解

vue3 深度监听用法 watch watchEffect 详解

时间:2024-11-02 13:21:03浏览次数:3  
标签:vue3 watch deep watchEffect user 深度 监听

在 Vue 3 中,你可以使用 watchwatchEffect 进行深度监听。深度监听意味着你能够监控一个对象及其嵌套属性的变化。

使用 watch 进行深度监听

如果你想监听一个响应式对象的所有嵌套属性,可以使用 deep: true 选项。以下是一个示例:

<template>
  <div>
    <input v-model="user.name" placeholder="Name" />
    <input v-model="user.age" placeholder="Age" />
  </div>
</template>

<script>
import { ref, watch } from 'vue';

export default {
  setup() {
    const user = ref({
      name: '',
      age: 0,
    });

    watch(
      user,
      (newValue, oldValue) => {
        console.log('User changed:', newValue);
      },
      { deep: true } // 深度监听
    );

    return {
      user,
    };
  },
};
</script>

使用 watchEffect

watchEffect 会立即执行并且在相关的响应式属性发生变化时重新执行。这种方法也支持深度监听,但不需要显式设置 deep: true

<template>
  <div>
    <input v-model="user.name" placeholder="Name" />
    <input v-model="user.age" placeholder="Age" />
  </div>
</template>

<script>
import { ref, watchEffect } from 'vue';

export default {
  setup() {
    const user = ref({
      name: '',
      age: 0,
    });

    watchEffect(() => {
      console.log('User changed:', user.value);
    });

    return {
      user,
    };
  },
};
</script>

总结

  • 使用 watch 时可以通过 { deep: true } 选项进行深度监听。
  • watchEffect 会自动追踪依赖,适合快速监控响应式数据。

如果你有任何具体的用例或问题,欢迎分享!

标签:vue3,watch,deep,watchEffect,user,深度,监听
From: https://blog.csdn.net/weixin_44303625/article/details/143449547

相关文章

  • .NET开源的实时应用监控系统 - WatchDog
    项目介绍WatchDog是一个开源(MITLicense)、免费、针对ASP.NetCoreWeb应用程序和API的实时应用监控系统。开发者可以实时记录和查看他们的应用程序中的消息、事件、HTTP请求和响应,以及运行时捕获的异常。项目工作原理它利用SignalR进行实时监控,并使用LiteDB作为无需配置的类似Mongo......
  • vue3 vue-i18n和pinia使用
    安装vue-i18n和Pinia(状态管理库)npminstallvue-i18n@10npminstallpinia 在main.js中引入i18n和piniaimport'./assets/main.css'import{createApp}from'vue'importAppfrom'./App.vue'importi18nfrom"./i18n";//引入pini......
  • vue3项目中使用iconify
    事情是这样的,我比较喜欢使用MaterialDesignIcons的图标(MaterialDesignIcons-IconLibrary-Pictogrammers)。最初我把整个MaterialDesignIcons的css文件下载下来,然后在vue3项目中使用。但是这个css文件的体积比较大,但是我用的也就是那几个icon图标。有没有办法实现图......
  • Vue3 – Composition API
    OptionsAPI的弊端认识CompositionAPIsetup函数的参数setup函数的返回值ReactiveAPI定义响应式复杂数据RefAPI定义响应式数据Ref自动解包setup函数定义数据ref和reactive的使用场景认识readonlyreadonly的使用Reactive判断的APItoRefs结构内容变......
  • npm包 - 发布vue3组件
    npm包-发布vue3组件 1.创建VUE3项目npmcreatevue 2.在项目中创建packages文件夹,创建index.js,创建 components文件夹,创建 PanelCard1.vue 编辑PanelCard1.vue<template><divstyle="width:200px;height:200px;background:grey"><button......
  • Vue3 + Vue Cli 搭建项目(详细)
     搭建:VueCLI5+Vue3+AntDesignVue3VueCLI5:是vue+大量的第三方组件;Vue3:是页面开发基于Vue;AntDesignVue3:是基于Vue3的UI组件;关于UI还有CSS的Bootstrap。 1.本地环境准备按照NodeJS得到npm,使用npm安装vuecli(脚手架),使用vuecli创建项目。VueCLI5......
  • vue3 类组件装饰器模式配置
    2024年10月31日vue3支持装饰器模式插件借助插件vue-facing-decorator实现类组件装饰器转换npminstall--save-devvue-facing-decorator@rollup/plugin-babel@babel/plugin-proposal-decorators@babel/plugin-proposal-class-propertiesvite.config.ts配置//第一种支......
  • vue3知识点:reactive对比ref
    @目录二、常用CompositionAPI5.reactive对比ref本人其他相关文章链接二、常用CompositionAPI问题:啥叫“组合式API”?答案:请看官方文档:https://v3.cn.vuejs.org/guide/composition-api-introduction.html5.reactive对比ref从定义数据角度对比:ref用来定义:基本类型......
  • vue3第一章基础:创建Vue3.0工程,包括使用vue-cli 创建、使用 vite 创建
    @目录一、vue2、vue3、vue-cli版本、vue-router版本的关联关系1.说明2.不同版本的vue对应的vue-router版本和vuex版本二、创建Vue3.0工程1.使用vue-cli创建2.使用vite创建一、vue2、vue3、vue-cli版本、vue-router版本的关联关系1.说明1.VueCLI4.5以下,对应的是Vue2;Vue......
  • Vue3+Elementplus+Univer-Sheet实现在线excel及其需要注意的点
    1、准备项目环境Vue3自行准备node.js环境2、ElementPlus官网官网安装教程自行参照官网3、Univer插件官网1)官网网址2)开始直接点击GetStarted侧边栏点击  后面直接按照教程走即可 4、配置插件需要注意如果上述插件包已经下载并成功引入vue......