vue 3 中watch 和watchEffect 的新用法

下面我就来讲解 "Vue 3 中 watch 和 watchEffect 的新用法" 的完整攻略。

1. 简介

在Vue 3中,watch 和 watchEffect 的用法得到了很大的改进。 在Vue 2中,watch 选项和 watch 函数要么立即执行要么需要手动设置 immediate 选项才能立即执行。如果你只是需要在数据变化时立即执行一段代码,那么Vue3中的 watchEffect 就可以胜任了;watchEffect 可以自动追踪依赖,并且只在依赖变化时执行代码。下面就对这两种新用法做详细的解释。

2. watchEffect

2.1 定义

watchEffect 会自动追踪依赖,并在其中任何一个依赖项改变时重新运行该函数。 这个 API 在一般情况下与 computed 很相似,但是它只接受一个函数作为其唯一的参数。它实际上是在内部执行了一个effect,代表一个可响应计算属性,任何 effect 的返回值都会自动成为它的返回值输出。

2.2 示例

例如,有以下的代码:

import { watchEffect, reactive } from 'vue'

const state = reactive({
  count: 0,
  doubleCount: 0
})

watchEffect(() => {
  state.doubleCount = state.count * 2
})

console.log(state.doubleCount) // output: 0

state.count ++

console.log(state.doubleCount) // output: 2

以上代码中,我们定义了一个 state 对象,其中包含两个属性 count 和 doubleCount,count 的变化会影响到 doubleCount。我们使用 watchEffect 监听 state 对象上属性 count 的变化,并使用其更新另一个属性 doubleCount,最后在控制台输出了 state.doubleCount 的值。我们可以看到,当 state.count 的值从0变为1时,state.doubleCount 的值也相应地从0变为了2。

3. watch

3.1 定义

在 Vue 3 中, watch 选项可以接受一个纯函数或一个函数体,用来监听被观察属性的变化并执行一些副作用。watch会在创建时执行第一次,而类似于 Vue2 中手动添加的 immediate 选项,watch 可以接受一个 immediate 选项以立即执行一次函数并进入这个函数后的侦听模式。除了 immediate 选项外,watch 还包含了一些其他的选项来改变它的行为。

3.2 示例

import { watch, reactive } from 'vue'

const state = reactive({
  count: 0,
  doubleCount: 0
})

watch(() => state.count, (newValue, oldValue) => {
  state.doubleCount = newValue * 2
})

console.log(state.doubleCount) // output: 0

state.count ++

console.log(state.doubleCount) // output: 2

以上代码中,我们同样使用了一个 state 对象,其中包含了两个属性 count 和 doubleCount。我们使用 watch 监听 count 的变化,并在回调函数中更新 doubleCount,最后还是输出了 doubleCount。可以发现,和 watchEffect 一样,另一个属性 doubleCount 已经被正确的计算出来了。

4. 总结

Vue 3 提供了更灵活、更简单的 watch 和 watchEffect 的新用法。将组件与数据更好的进行分离,使得开发更简易化。watchEffect 更方便,如果只是需要在数据变化时立即执行一段代码就可以使用,而 watch 可以更灵活地监听多个数据,并缩小监听范围,仅在所需要的情况下执行回调函数。这为我们开发私人定制提供了更多的实现方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue 3 中watch 和watchEffect 的新用法 - Python技术站

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

相关文章

  • vue项目中使用pinyin转换插件方式

    以下是使用pinyin转换插件在vue项目中的详细步骤: 步骤1:安装pinyin转换插件 在vue项目的命令行终端,使用npm或yarn等包管理工具安装pinyin插件,命令如下: npm install pinyin –save 或 yarn add pinyin 步骤2:在vue组件中引入pinyin插件及相关依赖 在需要使用pinyin转换的vue…

    Vue 2023年5月28日
    00
  • vue中清除定时器的方法实例详解

    首先让我来讲解一下“Vue中清除定时器的方法实例详解”。 简介 在Vue开发中,经常使用定时器来完成一些定时触发的任务。但是,在组件销毁之前需要清除定时器,否则旧的定时器会一直存在,导致内存泄漏和可能的性能问题。因此,了解如何在Vue中清除定时器是非常重要的。 清除定时器的方法 Vue中清除定时器,可以使用 clearInterval() 和 clearTi…

    Vue 2023年5月29日
    00
  • 简单谈一谈Vue中render函数

    当我们通过模板来渲染Vue组件时,Vue框架内部会将其编译成render函数执行。而render函数是Vue中的核心函数,我们可以自己手动编写render函数来实现更加灵活的渲染效果。 一、render函数基础 1.1 什么是render函数 Vue中的render函数是用来创建虚拟DOM的函数。它接受一个“createElement”函数作为参数用来构建D…

    Vue 2023年5月28日
    00
  • vue3 Composition API使用示例教程

    让我来分享一下关于“Vue3 Composition API使用示例教程”的完整攻略。 什么是Composition API? Composition API 是 Vue.js 3.x 中一种全新的 API 形式,它允许我们通过一个新的代码组织方式来组织我们的 Vue 组件。使用 Composition API,我们可以通过功能切分的思路更好地组织代码,并更…

    Vue 2023年5月28日
    00
  • vue事件监听函数on中的this指针域使用

    当在Vue组件中定义事件监听函数on时,this指针的使用是一个经常来引起困扰的问题。在Vue中,this指向的上下文会在函数被触发时发生变化,这取决于一些因素,包括函数是否使用了箭头函数、函数是如何被触发的以及我们如何向它传参。 下面是一些在Vue事件监听函数中正确使用this指针的方法: 1. 使用箭头函数 箭头函数的一个重要特征是它不绑定this指向,…

    Vue 2023年5月28日
    00
  • Vue组件实现评论区功能

    下面是详细讲解 Vue 组件实现评论区功能的完整攻略。 什么是 Vue 组件 Vue 组件就是将一个页面拆分成多个小模块,每个小模块就是一个 Vue 组件。Vue 组件可以重复使用,提高了代码的复用性和可维护性。 Vue 组件实现评论区功能 评论区功能是一个很常见的场景,下面我们来详细讲解如何使用 Vue 组件实现评论区功能。 步骤一:创建评论区组件 首先我…

    Vue 2023年5月29日
    00
  • Vue中如何使用base64编码和解码

    首先,我们需要明确一下base64编码和解码的概念。Base64是一种用来将二进制数据编码为ASCII字符的编码方式。解码则是将base64编码的数据还原成原本的二进制数据。 在Vue中使用base64编码和解码非常简单,我们可以通过两个内置的方法进行操作,分别是btoa()和atob()。 btoa()方法 btoa()方法可以将字符串进行base64编码…

    Vue 2023年5月27日
    00
  • vue作用域插槽详解、slot、v-slot、slot-scope

    作用域插槽是Vue组件系统中非常重要的一个概念,它使得组件的嵌套变得更加灵活,可以方便地实现组件之间的数据交流。本文将详细讲解Vue中的作用域插槽,包括slot、v-slot、slot-scope及其使用方法,并且提供两个实例说明。 1. slot和v-slot简介 在Vue中,我们可以通过slot来定义组件模板的插槽,然后在父组件中通过一些内容填充的方式来…

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