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

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日

相关文章

  • 一起来看看Vue的核心原理剖析

    一起来看看Vue的核心原理剖析 简介 《一起来看看Vue的核心原理剖析》是一篇介绍Vue.js框架核心原理的文章。本文将从源码分析的角度,详细讲解Vue.js框架的核心原理。 原理剖析 Vue.js框架主要有三个重要的概念:数据驱动、组件化和响应式。下面将对这三个概念进行详细的讲解。 数据驱动 在Vue.js框架中,它使用了数据绑定的方式来实现数据驱动。而数…

    Vue 2023年5月29日
    00
  • vue中实现上传文件给后台实例详解

    针对“vue中实现上传文件给后台的实例详解”,我的回答将分为以下几个部分说明: 概述 前端实现步骤 后端实现步骤 示例说明1 示例说明2 1. 概述 Vue是一种现代化的JavaScript框架,它能够帮助我们快速构建交互式界面。在许多Web应用程序中,我们需要允许用户上传文件到我们的服务器。尽管Vue本身并不提供文件上传功能,但通过结合一些其他的JavaS…

    Vue 2023年5月28日
    00
  • 如何理解Vue的render函数的具体用法

    Vue的render函数是Vue的核心功能之一,它可以帮助我们实现更强大和自由度更高的组件化。如果你能够掌握Vue的render函数的具体用法,可以针对项目需求定制化你的组件,从而更好地实现业务需求。 以下是如何理解Vue的render函数的具体用法的完整攻略: 什么是Vue的render函数 Vue的render函数是一个高阶函数,它用来描述一个Vue组件…

    Vue 2023年5月27日
    00
  • Vue.js展示AJAX数据简单示例讲解

    下面我将为你讲解如何在Vue.js中展示AJAX数据的完整攻略。 1. 起步 首先,我们需要安装npm包管理器,并使用它来安装Vue.js: npm install vue 安装完成后,在HTML文件中引入Vue.js: <script src="https://cdn.jsdelivr.net/npm/vue"></s…

    Vue 2023年5月28日
    00
  • vue.js实现简单轮播图效果

    以下是实现“vue.js实现简单轮播图效果”的攻略。 1. 确定需求 在开始实现前,我们需要先确定我们的需求。对于这个轮播图,我们需要实现以下几个功能: 显示轮播图内容 实现自动轮播功能 实现手动切换轮播图的功能 2. 搭建基本结构 为了实现以上功能,我们需要在HTML中添加以下基本结构: <div id="carousel"&gt…

    Vue 2023年5月27日
    00
  • 详解Vue生命周期和MVVM框架

    让我详细讲解”详解Vue生命周期和MVVM框架”的完整攻略。 首先,让我们来了解一下Vue生命周期。Vue组件有8个生命周期钩子函数,可以在Vue组件的生命周期中执行一些操作。 组件实例的生命周期可以分为四个阶段:创建、挂载、更新、销毁。下面是Vue生命周期的详细解释: 创建 beforeCreate:在实例初始化之后,数据观测(data observer)…

    Vue 2023年5月28日
    00
  • 详解vue路由

    详解Vue路由 Vue.js是一个基于Web的JavaScript框架,它被广泛用于现代web应用程序的构建中。Vue使用可复用的组件和可组合的组件模式来构建用户界面,其中Vue路由是其中一个核心功能。在这篇文章中,我们将会详细介绍如何使用Vue路由构建单页应用程序。 什么是Vue路由? Vue路由是Vue.js框架提供的一种官方解决方案,用于将不同URL对…

    Vue 2023年5月27日
    00
  • java Tcp通信客户端与服务器端实例

    Java Tcp通信是一种基于TCP协议的客户端与服务器端的通信方式。Java语言中提供了相应的API,可以方便地进行TCP通信。本文将详细介绍Java Tcp通信的使用方法,并提供两个简单的示例。 1. Java Tcp通信的基本概念 Java Tcp通信需要了解以下基本概念: 服务器端:提供服务程序的一方。服务器程序具有独立运行的能力,等待客户端的连接请…

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