活用 Composition API 核心函数,打造卓越应用(上)

在这里插入图片描述

🤍 前端开发工程师、技术日更博主、已过CET6
🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1
🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》
🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》

文章目录

  • 一、引言
    • 对 Composition API 的简单介绍
  • 二、核心函数概述
    • 列出 Composition API 中的核心函数
    • 对每个核心函数的作用进行简要说明
  • 三、具体核心函数讲解
    • 详细讲解每个核心函数的语法和参数
    • 提供具体的代码示例来演示函数的使用

一、引言

对 Composition API 的简单介绍

Composition API 是 Vue.js 提供的一种新的代码组织方式,它允许开发者更灵活地组合和复用组件的功能。相比于传统的 Options API,Composition API 采用了更具模块化和函数式的风格。

通过 Composition API,开发者可以使用一组核心函数(如 setuprefreactive 等)来管理组件的状态、响应式数据以及逻辑。这种方式使得代码更加简洁、易读,并且更容易进行测试和维护。

此外,Composition API 还提供了更好的代码分离和可复用性。组件的功能可以分解为独立的函数或模块,然后在需要的地方进行组合和使用。这有助于提高代码的可扩展性和复用性,使开发更加高效。

总的来说,Composition API 为 Vue.js 开发者提供了一种更强大、灵活的方式来构建复杂的用户界面,同时也提升了代码的质量和可维护性。🚀💻

二、核心函数概述

列出 Composition API 中的核心函数

Composition API 中的核心函数有 setuprefreactive

其中,setup 函数是 Composition API 的入口,它在组件的生命周期中尽早执行,即在组件的属性解析之后,但在任何其他生命周期钩子之前。在这个函数中,你可以定义响应式的状态、计算属性、方法和生命周期钩子。

ref 用于基本类型,而 reactive 适用于对象和数组。这两个 API 都返回一个响应式的引用,使得状态的改变能够自动反映到视图上。

对每个核心函数的作用进行简要说明

以下是 Composition API 中核心函数的作用简要说明:

  • setup:是所有 Composition API 的入口,在组件中所用到的:数据、方法等,均要配置在 setup 中。setup 函数有两种返回值,若返回一个对象,则对象中的属性、方法,在模板中均可以直接使用;若返回一个渲染函数,则可以自定义渲染内容。
  • ref:用于创建一个包装对象,将普通的数据变成响应式数据。使用 ref 包装后,你需要通过 .value 来访问和修改数据。
  • reactive:用于创建一个包装对象,可以将整个对象变成响应式。reactive 可以让整个对象变成响应式,所以你可以直接访问和修改对象的属性。

这些函数在 Vue 3的 Composition API 中广泛用于创建和管理响应式数据,有助于更灵活地处理组件内的数据状态。

三、具体核心函数讲解

详细讲解每个核心函数的语法和参数

以下是 Composition API 中核心函数的详细语法和参数:

  • setup 函数:
    • 语法:setup(props, context)setup(props, { attrs, slots, emit })
    • 参数说明:
      • props:包含 props 配置声明且传入了的所有属性的对象。
      • context:一个上下文对象,包含组件的一些上下文信息,如 attrsslotsemit
      • attrs:包含没有在 props 配置中声明的属性的对象,相当于 this.$attrs
      • slots:包含所有传入的插槽内容的对象,相当于 this.$slots
      • emit:一个事件发射器对象,可以用来触发自定义事件。
  • ref 函数:
    • 语法:const xxx = ref(initValue)
    • 参数说明:xxx 是一个变量名,用于存储响应式数据,initValue 是初始值,可以是基本类型或对象类型的数据。
  • reactive 函数:
    • 语法:reactive(obj)
    • 参数说明:obj 是一个普通对象,通过 reactive 函数处理后,该对象会变成响应式对象。

上述内容仅为核心函数的语法和参数说明,具体使用方法和示例请参考 Vue 官方文档。

提供具体的代码示例来演示函数的使用

以下是 Composition API 中核心函数的具体代码示例:

  • setup 函数:
import { Reactive, onMounted } from 'vue';
// 定义响应式状态
export function useUserAuthentication() {const state = Reactive({user: null,error: null,loading: false,});// 异步函数用于认证用户const authenticateUser = async (username, password) => {state.loading = true;try {const response = await fetch('/api/authenticate', {method: 'POST',body: JSON.stringify({ username, password }),headers: {'Content-Type': 'application/json',},});const userData = await response.json();state.user = userData;} catch (error) {state.error = error;} finally {state.loading = false;}};// 在组件挂载时自动尝试获取用户信息onMounted(() => {// 可以在组件挂载时自动尝试获取用户信息});return {...state,authenticateUser,};
}
  • ref 函数:
import { ref } from 'vue';
// 定义一个响应式状态变量
const count = ref(0);
// 更改状态、触发更新的函数
function increment() {count.value++;
}
// 在组件挂载完毕后,输出计数器的初始值
onMounted(() => {console.log(`计数器初始值为 ${count.value}`);
})
  • reactive 函数:
import { Reactive } from 'vue';
// 创建响应式对象
const obj = Reactive({data: null,
});
// 监听属性变化
watchEffect(() => {console.log(`data 属性的值为: ${obj.data}`);
});

上述代码示例分别展示了 setuprefreactive 函数的基本用法,你可以根据自己的需求进行适当的修改和扩展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/685741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试指导(面试会遇到的问题准备)

自我介绍 介绍项目流程 项目简介、用途项目架构、技术、模块、我负责的模块 开发过程中遇到的问题 效率问题、并发问题、JVM内存泄漏等问题接口修改文档不同步拖进度问题使用到了没使用过的技术浏览器 JDK linux等环境问题 你的优点是什么 能加班,能出差学习能…

简单试验:用Excel进行爬虫

文章目录 Excel的版本具体操作实例从网站上爬取工商银行的汇率Excel的版本 office 2016,2019,365这几个版本都可以 具体操作 #mermaid-svg-NlIVMivGoJbdyWW0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-NlIVMi…

Vue2学习第三天

Vue2 学习第三天 1. 计算属性 computed 计算属性实现 定义:要用的属性不存在,要通过已有属性计算得来。 原理:底层借助了Objcet.defineproperty方法提供的getter和setter。 get函数什么时候执行? 初次读取时会执行一次。当依赖…

如何让Obsidian实现电脑端和安卓端同步

Obsidian是一款知名的笔记软件,支持Markdown语法,它允许用户在多个设备之间同步文件。要在安卓设备上实现同步,可以使用remote save插件,以下是具体操作步骤: 首先是安装电脑端的obsidian,然后依次下载obs…

Typora+PicGO+腾讯云COS做图床教程

文章目录 Typora+PicGO+腾讯云COS做图床教程一、为什么使用图床二、Typora、PicGO和腾讯云COS介绍三、下载Typora和PicGOTyporaPicGO 四、配置Typora、PicGO和腾讯云COS腾讯云COS配置PicGO配置Typora配置 Typora+PicGO+腾讯云COS做…

STM32入坑

目录 一、选择合适的开发板 二、安装和配置开发环境 三、学习基础知识 四、编写和调试程序 五、扩展功能和学习进阶知识 六、坚持,坚持,坚持 七、STM32的学习路径 一、选择合适的开发板 首先,你需要选择一款合适的STM32开发板。开发板…

mysql 执行update操作 记录未修改

问题 mysql 执行update操作 记录未修改 详细问题 笔者进行SpringBootMybatis项目开发,确认执行update操作 控制台内容如下 Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession3cbe9459] was not registered for sync…

基于STM32的老人心率监测系统

1. 系统设计 本次课题为基于STM32的老人心率监测系统,在此设计了如图2.1所示的系统结构框图,整个系统包括了MAX30102心率血氧检测模块,SIM800短信模块,液晶显示模块,按键,ESP8266无线通信模块以及主控制器s…

关于数据库

目录 一 什么是数据库(DB) 二 什么是数据库管理系统(DBMS) 三 数据库的作用/好处 一 什么是数据库(DB) 简单理解,数据库是存放数据的地方,就像冰箱是存放冷鲜食品的地方。 数据是数据存储的基本对象,而数据分为多…

mysql 查询性能优化关键点总结

MySQL查询性能优化是数据库管理的重要环节,良好的性能优化可以提高查询效率,降低系统负载。以下是一些关键点,用于优化MySQL查询性能: 1. 索引优化 索引是MySQL查询优化的重要手段,合理的索引可以大大…

【CV论文精读】【BEV感知】BEVFormer:通过时空Transformer学习多摄像机图像的鸟瞰图表示

【CV论文精读】BEVFormer Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers BEVFormer:通过时空Transformer学习多摄像机图像的鸟瞰图表示 图1:我们提出了BEVFormer,这是一种自动驾驶的…

海纳思NAS盒子设置网卡静态IP

TV机顶盒刷了海纳思NAS系统之后,就可以跑路由了,系统默认得网卡是DHCP配置,它这个东西很麻烦,如果是物理硬件路由器,可以到后台去设置MAC跟IP地址相互绑定。 但如果是直接插在移动光猫上面,用户管理员是没…

js基础篇

javascript 1.1javascript是什么&#xff1f; 是运行在浏览器【客户端】的编程语言 1.2 js的组成 ECMAScript (基础语法) Web APIs (DOM BOM) 1.3 js的书写位置 内部&#xff0c;外部&#xff0c;行内 【代码写在标签内部】 // 内部 <script>alter("你好&…

软件实例分享,药店进销存软件医药系统进销存教程

软件实例分享&#xff0c;药店进销存软件医药系统进销存教程 一、前言 以下软件程序教程以 佳易王药店进销存管理系统V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 软件可以对药品的有效期进行管理&#xff0c;可以查询还有多少天到期的…

云计算基础-网络虚拟化

虚拟交换机 什么是虚拟交换机 虚拟交换机是一种运行在虚拟化环境中的网络设备&#xff0c;其运行在宿主机的内存中&#xff0c;通过软件方式在宿主机内部实现了部分物理交换机的功能&#xff0c;如 VLAN 划分、流量控制、QoS 支持和安全功能等网络管理特性 虚拟交换机在云平…

编程语言的实际应用场景(C语言场景)

从应用范围上来说&#xff0c;这些编程语言大致可以分为两种&#xff1a; 一种是专用型语言&#xff0c;也就是针对某个特定领域而设计出来的语言&#xff1b;另一种是通用型语言&#xff0c;它们可以开发多种类型的应用程序&#xff0c;而不是局限在某个特定的领域。 专用型…

深度学习基础之《TensorFlow框架(2)—图》

一、什么是图结构 1、图包含了一组tf.Operation代表的计算单元对象和tf.Tensor代表的计算单元之间流动的数据 图结构&#xff1a;数据(Tensor) 操作(Operation) 二、图相关操作 1、默认图 通常TensorFlow会默认帮我们创建一张图 查看默认图的两种方法&#xff1a; &#x…

紫微斗数全书卷一斗数太微赋

文章目录 前言太微赋形性赋星垣论斗数准绳斗数发微论重补斗数彀率增补太微赋总结 前言 紫微斗数全书卷一 太微赋 斗数至玄至微&#xff0c;理旨难明&#xff0c;虽设问于各篇之中&#xff0c;犹有言而未尽&#xff0c;至如星之分野&#xff0c;各有所属&#xff0c;寿夭贤愚&…

中科星图——LANDSAT_8/02/T1/TOA的Landsat8_C2_TOA类数据集

简介 数据名称&#xff1a; Landsat8_C2_TOA 数据来源&#xff1a; USGS 时空范围&#xff1a; 2020年1月-2023年3月 空间范围&#xff1a; 全国 数据简介&#xff1a; Landsat8_C2_TOA数据集是将数据每个波段的辐射亮度值转换为大气层顶表观反射率TOA&#xff0c;是…

如何解决缓存和数据库的数据不一致问题

数据不一致问题是操作数据库和操作缓存值的过程中&#xff0c;其中一个操作失败的情况。实际上&#xff0c;即使这两个操作第一次执行时都没有失败&#xff0c;当有大量并发请求时&#xff0c;应用还是有可能读到不一致的数据。 如何更新缓存 更新缓存的步骤就两步&#xff0…