VUE3中watch监听使用实例详解

标题:VUE3中watch监听使用实例详解

Vue 3中,使用watch监听数据变化变得更加简单和高效。下面详细讲解Vue 3中watch的使用实例。

使用watch监听简单数据变化

定义数据和watch

<template>
  <div>
    {{ number }}
  </div>
</template>

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

export default {
  setup() {
    const state = reactive({
      number: 0
    });

    watch(() => state.number, (newVal, oldVal) => {
      console.log(`new: ${newVal}, old: ${oldVal}`);
    });

    return {
      ...state
    };
  }
};
</script>

在上述代码中,我们创建了一个state对象,并定义了number属性。通过watch监听number属性的变化,并调用回调函数进行处理。在回调函数中,我们可以得到新值和旧值,可以根据实际情况进行操作。

改变数据值

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

export default {
  setup() {
    const state = reactive({
      number: 0
    });

    watch(() => state.number, (newVal, oldVal) => {
      console.log(`new: ${newVal}, old: ${oldVal}`);
    });

    const changeNumber = () => {
      state.number++;
    };

    return {
      ...state,
      changeNumber
    };
  }
};
</script>

我们添加了一个按钮,通过调用changeNumber方法改变number的值,这时候我们可以在控制台看到“new”的值在每次改变时都会打印出来。

使用watch监听深层次数据变化

定义嵌套数据和watch

<template>
  <div>
    {{ user.name }}
    {{ user.age }}
  </div>
</template>

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

export default {
  setup() {
    const user = reactive({
      name: 'John',
      age: 18,
      address: {
        country: 'USA',
        city: 'NewYork'
      }
    });

    // 需要添加深度监听
    watch(
      () => user,
      (newVal, oldVal) => {
        console.log(`new: ${JSON.stringify(newVal)}, old: ${JSON.stringify(oldVal)}`);
      },
      { deep: true }
    );

    const changeUser = () => {
      user.name = 'Paul';
    };

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

我们在上述代码中定义了一个user对象,在watch的回调函数中打印出user对象的值。我们需要在watch的第三个参数中添加{deep: true}来实现深层次监听。

改变深层次数据的值

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

export default {
  setup() {
    const user = reactive({
      name: 'John',
      age: 18,
      address: {
        country: 'USA',
        city: 'NewYork'
      }
    });

    // 需要添加深度监听
    watch(
      () => user,
      (newVal, oldVal) => {
        console.log(`new: ${JSON.stringify(newVal)}, old: ${JSON.stringify(oldVal)}`);
      },
      { deep: true }
    );

    const changeUser = () => {
      user.name = 'Paul';
      user.address.country = 'UK';
    };

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

我们添加了一个按钮,通过调用changeUser方法改变user对象中的值,这时候我们可以在控制台看到“new”的值在每次改变时都会打印出来,包括了深层次的数据变化。

到此,Vue 3中watch的使用实例就介绍完毕了。通过以上的示例,相信大家可以更好地掌握watch的使用方法,实现更为灵活高效的开发。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:VUE3中watch监听使用实例详解 - Python技术站

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

相关文章

  • 微信小程序wepy框架笔记小结

    微信小程序wepy框架笔记小结 什么是wepy框架 wepy是一个类Vue框架的微信小程序框架,它封装了很多常见的操作,方便我们快速开发小程序,同时还支持组件化开发。 wepy框架的优点 代码结构清晰明了,易于维护 支持组件化开发,方便复用 支持ES6/7标准语法,提高开发效率 自带脚手架,快速初始化项目 wepy框架的基本使用 安装wepy npm ins…

    Vue 2023年5月27日
    00
  • 解决vue.js 数据渲染成功仍报错的问题

    针对“解决vue.js数据渲染成功仍报错的问题”的完整攻略,可以分为以下几个步骤: 1. 确认报错信息 当出现报错信息的时候,首先需要确认具体的报错信息。不同的报错信息可能有不同的原因和解决方法。常见的一些报错信息包括: cannot read property ‘xxx’ of undefined Cannot read property ‘$emit’ …

    Vue 2023年5月27日
    00
  • vue源码解析computed多次访问会有死循环原理

    下面是关于“vue源码解析computed多次访问会有死循环原理”的完整攻略。 1. computed的原理 先来简单介绍一下computed的原理。在Vue组件中,computed是指计算属性,是一个基于响应式依赖进行缓存的数据属性,它的值在使用时会自动收集依赖,发现依赖变化时会重新计算,并且将结果缓存起来,直到依赖变化才重新计算。这样就避免了重复计算,提…

    Vue 2023年5月28日
    00
  • VUE组件简明讲解

    首先,我们来讲解一下“Vue组件简明讲解”的完整攻略。 什么是Vue组件 Vue组件可以理解为是一个自定义的、具有某些特定功能或特征的、可复用的Vue实例。 组件化开发是现代Web开发中的重要技术之一,Vue框架作为目前比较流行的前端框架之一,有着非常完善的组件化开发机制,可以大大提高代码复用性和开发效率。 Vue组件的特点 Vue组件有以下几个主要特点: …

    Vue 2023年5月28日
    00
  • vue学习教程之带你一步步详细解析vue-cli

    Vue学习教程之带你一步步详细解析vue-cli 前言 Vue.js是一个轻量级的JavaScript框架,它与React和Angular一起组成了前端三大框架。Vue.js由开发者Evan You创建,它的双向数据绑定和组件化思想极大地提高了前端开发的效率。 随着Vue.js的发展,它的生态系统也日益完善。vue-cli是Vue.js的脚手架工具,它可以帮…

    Vue 2023年5月27日
    00
  • vue+video.js实现视频播放列表

    下面是关于“vue+video.js实现视频播放列表”的完整攻略。 1. 准备工作 安装 video.js 首先,我们需要安装 video.js。可以使用 npm 命令进行安装: npm install video.js –save 引入 video.js 在 Vue 项目的入口文件(比如 main.js)中,需要引入 video.js 和 video-j…

    Vue 2023年5月28日
    00
  • vue2.x双向数据绑定原理解析

    vue2.x双向数据绑定原理解析 什么是双向数据绑定 双向数据绑定是指视图层和数据层之间的数据同步。当数据层中的数据发生变化时,视图层会自动更新;反之,当视图层中用户操作修改了数据时,数据层的数据也会自动更新。 通常而言,双向数据绑定有两种方式,一种是脏值检测(angular.js),另一种则是数据劫持(vue.js)。 本文将介绍 vue2.x 中的数据劫…

    Vue 2023年5月27日
    00
  • vue-resource:jsonp请求百度搜索的接口示例

    关于“vue-resource:jsonp请求百度搜索的接口示例”的完整攻略,主要分为以下四步: 1.引入vue-resource库通过npm或者CDN的方式引入vue-resource库,使其可以在项目中被使用。具体代码为: <!– 使用CDN引入vue-resource –> <script src="https://cd…

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