Vue3中监听数据变化,以及composition Api

简介: Vue3中监听数据变化,以及composition Api

Vue3监听数据变化,以及composition Api

Vue2中的数据监听

在Vue2中,可以使用watch选项或$watch方法来监听数据变化。

watch选项

在Vue2的组件选项中,有一个watch选项,用来监听数据的变化。具体的语法如下:

export default {
  data() {
    return {
      count: 0
    }
  },
  watch: {
    count(newValue, oldValue) {
      console.log(`count值从${oldValue}变为${newValue}`)
    }
  }
}

在上面的代码中,我们在组件选项中定义了一个watch选项,用来监听count的变化。当count的值发生变化时,会执行回调函数,并将变化前的值和变化后的值作为参数传入回调函数中。

$watch方法

在Vue2中,还可以使用$watch方法来监听数据变化。具体的语法如下:

export default {
  data() {
    return {
      count: 0
    }
  },
  mounted() {
    this.$watch('count', (newValue, oldValue) => {
      console.log(`count值从${oldValue}变为${newValue}`)
    })
  }
}

在上面的代码中,我们在组件的mounted钩子函数中使用$watch方法来监听count的变化。当count的值发生变化时,会执行回调函数,并将变化前的值和变化后的值作为参数传入回调函数中。

Vue3中的数据监听

在Vue3中,可以使用watch函数来监听数据变化。

watch函数

在Vue3中,可以使用watch函数来监听数据变化。具体的语法如下:

import { watch, ref } from 'vue'
export default {
  setup() {
    const count = ref(0)
    watch(count, (newValue, oldValue) => {
      console.log(`count值从${oldValue}变为${newValue}`)
    })
    return {
      count
    }
  }
}

在上面的代码中,我们使用watch函数来监听count的变化。当count的值发生变化时,会执行回调函数,并将变化前的值和变化后的值作为参数传入回调函数中。

watch为什么只是Proxy的附属品

在Vue3中,使用watch监听数据变化时,会自动创建一个响应式对象,并使用Proxy来监听该对象的变化。实际上,Vue3中的响应式系统是基于Proxy实现的,而watch函数只是响应式系统的一个附属品,用来监听数据变化并执行相应的回调函数,可以理解为是对Proxy的封装。


与Vue2中的数据监听方式不同,Vue3中的watch函数可以监听任何响应式数据的变化,包括响应式对象、响应式数组、计算属性等。这就使得Vue3中的数据监听更加灵活和方便,可以根据实际情况选择不同的监听方式。


总的来说,Vue3中的数据监听方式更加灵活和方便,使用watch函数可以监听任何响应式数据的变化,并执行相应的回调函数。watch函数只是Vue3响应式系统的一个附属品,用来封装Proxy的功能,使得数据监听更加方便和高效。


Options API 和 Composition API

Options API是Vue2中使用的API风格,它是一种基于选项的API,即我们在Vue实例中定义一些选项,例如data、methods、computed、watch等等。Options API的优点是易于理解和使用,但是当组件逻辑变得复杂时,代码结构会变得混乱不易于维护。


Composition API是Vue3中新增的API风格,它基于函数的API,即我们可以将组件的逻辑拆分成多个函数,每个函数只关注特定的功能,然后再将这些函数组合成一个组件。Composition API的优点是可以更好地组织代码,易于复用和测试,并且可以更好地支持TypeScript。


Composition API提供了一些常用的函数,例如reactive、ref、computed、watchEffect等等,可以帮助我们更方便地管理组件的状态和行为。


下面是一些常用的Composition API函数:


reactive:将一个普通对象转换成响应式对象


ref:将一个普通变量转换成响应式变量


computed:创建一个计算属性


watchEffect:创建一个响应式副作用


watch:创建一个响应式的侦听器


onMounted:在组件挂载时执行的函数


onUpdated:在组件更新时执行的函数


onUnmounted:在组件卸载时执行的函数


总之,Composition API是Vue3中的一个重要特性,可以帮助我们更好地组织代码,提高代码的可读性和可维护性。


⭐⭐以reactive函数为例,它的语法如下:

import { reactive } from 'vue'
const state = reactive({
  count: 0
})

这个函数接受一个普通的JavaScript对象作为参数,并返回一个响应式的对象。我们可以通过访问state.count属性来获取或设置它的值,当属性的值发生改变时,相关的组件将会自动更新。

⭐⭐另一个常用的函数是ref,它的语法如下:

import { ref } from 'vue'
const count = ref(0)

这个函数接受一个普通的JavaScript值作为参数,并返回一个响应式的变量。我们可以通过访问count.value属性来获取或设置它的值,当变量的值发生改变时,相关的组件将会自动更新。

浅浅的列举两个例子,其他的用法可以参考官方文档,传送门:官方文档


相关文章
|
9天前
|
人工智能 关系型数据库 MySQL
数据魔力,一触即发 —— Dataphin数据服务API,百炼插件新星降临!
本文通过一个利用百炼大模型平台和Dataphin数据服务API构建一个客户360智能应用的案例,介绍如何使用Dataphin数据服务API在百炼平台创建一个自定义插件,用于智能应用的开发,提升企业智能化应用水平。
数据魔力,一触即发 —— Dataphin数据服务API,百炼插件新星降临!
|
6天前
|
XML 数据可视化 API
商品详情数据实战案例,API接口系列
淘宝商品详情数据在电商领域具有广泛的应用价值,而淘宝商品详情API接口则为开发者提供了获取这些数据的重要途径。通过合理利用这些接口和数据,可以提升业务效率、优化用户体验,为电商行业的发展注入新的活力。
|
10天前
|
SQL 缓存 API
在API接口数据获取过程中,如何确保数据的安全性和隐私性?
在API接口数据获取过程中,确保数据的安全性和隐私性至关重要。本文介绍了身份认证与授权、防止SQL注入和XSS攻击、加密传输、API版本控制、限流与熔断、压力测试与性能优化、备份与恢复以及法律和伦理考量等关键措施,帮助开发者和管理者有效保护API接口的数据安全和隐私性。
|
15天前
|
JavaScript 数据管理 Java
在 Vue 3 中使用 Proxy 实现数据双向绑定的性能如何?
【10月更文挑战第23天】Vue 3中使用Proxy实现数据双向绑定在多个方面都带来了性能的提升,从更高效的响应式追踪、更好的初始化性能、对数组操作的优化到更优的内存管理等,使得Vue 3在处理复杂的应用场景和大量数据时能够更加高效和稳定地运行。
36 1
|
15天前
|
JavaScript 开发者
在 Vue 3 中使用 Proxy 实现数据的双向绑定
【10月更文挑战第23天】Vue 3利用 `Proxy` 实现了数据的双向绑定,无论是使用内置的指令如 `v-model`,还是通过自定义事件或自定义指令,都能够方便地实现数据与视图之间的双向交互,满足不同场景下的开发需求。
36 1
|
7天前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
17天前
|
JSON 前端开发 JavaScript
API接口商品详情接口数据解析
商品详情接口通常用于提供特定商品的详细信息,这些信息比商品列表接口中的信息更加详细和全面。以下是一个示例的JSON数据格式,用于表示一个商品详情API接口的响应。这个示例假定API返回一个包含商品详细信息的对象。
|
17天前
|
存储 监控 安全
API接口数据获取全流程用户指南
本文介绍了从明确需求到数据存储与管理的API接口数据获取全流程。首先,明确业务需求和选择合适的数据源;接着,准备API接口,包括审查文档、申请密钥和安全存储;然后,构建与发送请求,处理响应与数据;最后,进行数据存储与管理,并持续监控与优化,确保数据的安全与合规。通过这些步骤,用户可以高效地获取和管理数据,为数据分析和业务优化提供支持。
|
6月前
|
JavaScript API
【vue实战项目】通用管理系统:api封装、404页
【vue实战项目】通用管理系统:api封装、404页
76 3
|
6月前
|
人工智能 JavaScript 前端开发
毕设项目-基于Springboot和Vue实现蛋糕商城系统(三)
毕设项目-基于Springboot和Vue实现蛋糕商城系统