Vue3中watch监听对象的属性值(监听源必须是一个getter函数)

yizhihongxing

Vue3中,如果要监听对象的属性值变化,需要使用watch函数,并且监听源必须是一个getter函数。这是因为Vue3中使用了Proxy来实现响应式,并且只有在getter函数中才能正确的捕捉到属性的访问。

下面是完整的攻略,包含两条示例说明:

监听对象的属性值变化

要监听对象的属性值变化,需要使用Vue3中的watch函数。watch函数有两个参数:第一个是用于监听的对象或函数,第二个是回调函数,用于处理变化后的逻辑。

示例代码如下:

import { reactive, watch } from 'vue';

const state = reactive({ count: 0 });

watch(
  // 监听源,必须是一个getter函数
  () => state.count,
  // 回调函数,在count属性值变化后触发
  (newVal, oldVal) => {
    console.log(`count值从${oldVal}变为${newVal}`);
  }
);

// 修改count属性值,让watch函数触发
state.count = 1;

在上面的示例中,我们使用了reactive函数创建了一个响应式对象state,并且使用watch函数监听了state.count属性值的变化。当count属性值变化后,watch函数会触发回调函数,并输出变化前后的值。

需要注意的是,在监听源时,必须使用getter函数,而不能直接使用对象属性。否则,watch函数无法正确的捕捉到属性的访问,从而无法监听到属性值的变化。

监听对象的子属性值变化

如果要监听对象的子属性值变化,也需要使用Vue3中的watch函数。不同的是,在监听源时,需要使用一个函数返回子属性的值,而不是直接使用子属性访问。

示例代码如下:

import { reactive, watch } from 'vue';

const state = reactive({ 
  user: {
    name: '张三',
    age: 18
  }
});

watch(
  // 监听源,返回子属性name的值
  () => state.user.name,
  // 回调函数,在name属性值变化后触发
  (newVal, oldVal) => {
    console.log(`name值从${oldVal}变为${newVal}`);
  }
);

// 修改name属性值,让watch函数触发
state.user.name = '李四';

在上面的示例中,我们使用了reactive函数创建了一个响应式对象state,并且使用watch函数监听了state.user.name属性值的变化。当name属性值变化后,watch函数会触发回调函数,并输出变化前后的值。

需要注意的是,在监听源时,要使用一个函数返回子属性的值,而不是直接使用子属性访问。这样才能确保watch函数能够正确的捕捉到子属性的访问,从而监听到子属性值的变化。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue3中watch监听对象的属性值(监听源必须是一个getter函数) - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 基于Vue2.X的路由和钩子函数详解

    基于Vue2.X的路由和钩子函数详解 前言 在Vue.js应用程序中,路由用于控制页面的导航和显示,同时路由钩子函数可以执行一些特定的操作,如在路由改变前后进行某些操作。 本文将详解Vue.js的路由和钩子函数的使用方法。 Vue.js路由 安装 Vue Router 我们使用npm进行包的安装。在命令行中输入以下命令: npm install vue-ro…

    Vue 2023年5月28日
    00
  • vue开发之moment的介绍与使用

    Vue开发之Moment的介绍与使用 Moment.js介绍 Moment.js是一个专门用来解析、显示和操作日期时间数据的JavaScript库,提供了各种格式化、时间计算、日期相差、本地化和持续时间等功能,非常实用。 Moment.js可以用在浏览器端和Node.js环境下,可以通过npm或直接引入CDN来使用。同时,Moment.js也支持在Vue和其…

    Vue 2023年5月29日
    00
  • Vue中props的使用详解

    Vue中props的使用详解 什么是props 在Vue中,每个组件都可以接受一些参数,这些参数被称为props。props是一个数组,在组件定义中声明。你可以使用props从父组件中传递数据到子组件中。 如何使用props 在组件定义中声明props属性,用于接收父组件中传递的数据。在组件使用中,使用v-bind指令将需要传递给子组件的数据,绑定到组件的对…

    Vue 2023年5月28日
    00
  • 分分钟学会vue中vuex的应用(入门教程)

    分分钟学会vue中vuex的应用(入门教程) 简介 Vuex是一个专门为Vue.js设计的状态管理库,它可以简化Vue.js应用程序中状态管理的开发流程,提高应用程序的性能和可维护性。 安装 Vuex可以通过npm进行安装,打开命令行界面并输入以下命令: npm install vuex 配置 在Vue.js应用程序中使用Vuex,需要依次执行以下步骤: 引…

    Vue 2023年5月27日
    00
  • Vue处理循环数据流程示例精讲

    Vue 处理循环数据的流程包含了三个主要的步骤:1. 遍历数据;2. 缓存节点;3. 渲染虚拟 DOM。 1. 遍历数据 Vue 在处理循环数据时,首先需要遍历数据。遍历的方式根据不同的类型而不同。如果是数组类型,Vue 使用一个 for 循环进行遍历,如果是对象类型,Vue 使用一个 Object.keys() 方法进行遍历。 下面的代码示例演示了如何使用…

    Vue 2023年5月27日
    00
  • element日历calendar组件上月、今天、下月、日历块点击事件及模板源码

    下面是详细讲解 “element 日历 calendar 组件上月、今天、下月、日历块点击事件及模板源码”的完整攻略。 1. 功能说明 element 日历 calendar 组件是一款强大的日期选择组件,常用于项目中的日期选择、预约等场景。在本篇攻略中,将详细讲解其上月、今天、下月、日历块点击事件及模板源码等内容。 上月、下月按钮点击事件:点击上月、下月后…

    Vue 2023年5月29日
    00
  • vue项目启动命令个人学习记录

    Vue项目启动命令个人学习记录 在开始介绍Vue项目启动命令之前,请先确保你已经通过npm安装好了Vue, 并且创建好了新的Vue项目。 安装依赖 在启动Vue项目之前,我们需要在项目根目录下执行以下命令安装项目所需要的依赖: npm install 启动开发环境 开发环境下我们需要实时预览我们所写的代码,以便于随时检查。 npm run serve 该命令…

    Vue 2023年5月28日
    00
  • vue-cli3使用mock数据的方法分析

    vue-cli3使用mock数据的方法分析 什么是Mock数据 在前端开发中,当需要访问后端接口来获取数据时,如果后端接口还没有开发完成或者还没有部署到服务器中,前端开发人员就无法进行开发工作。而使用Mock数据可以解决这个问题。 Mock数据是指在前端开发中,为了模拟真实的后端接口数据而创建的一组模拟数据,可以使用一些工具快速生成,比如json-serve…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部