活用 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,一经查实,立即删除!

相关文章

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做…

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…

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

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

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;而不是局限在某个特定的领域。 专用型…

中科星图——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…

【STM32 CubeMX】串口编程DMA+IDLE中断

文章目录 前言一、为什么要引入IDLE中断二、IDLE中断使用方式2.1 接收的三种情况2.2 函数的使用查询方式中断方式DMA方式分析一个问题 总结 前言 在嵌入式系统中&#xff0c;串口通信是一项关键的任务&#xff0c;而使用DMA&#xff08;直接内存访问&#xff09;结合IDLE中断进…

PLC_博图系列☞FBD

PLC_博图系列☞FBD 文章目录 PLC_博图系列☞FBD背景介绍FBD优势局限性 FBD 元素 关键字&#xff1a; PLC、 西门子、 博图、 Siemens 、 FBD 背景介绍 这是一篇关于PLC编程的文章&#xff0c;特别是关于西门子的博图软件。我并不是专业的PLC编程人员&#xff0c;也不懂电路…

CTFshow web(文件上传158-161)

web158 知识点&#xff1a; auto_append_file 是 PHP 配置选项之一&#xff0c;在 PHP 脚本执行结束后自动追加执行指定的文件。 当 auto_append_file 配置被设置为一个文件路径时&#xff0c;PHP 将在执行完脚本文件的所有代码后&#xff0c;自动加载并执行指定的文件。 这…

可视化锻炼日记ExerciseDiary

什么是 ExerciseDiary &#xff1f; ExerciseDiary 是带有 GitHub 风格的年度可视化的锻炼日记。 安装 在群晖上以 Docker 方式安装。 在注册表中搜索 exercisediary &#xff0c;选择第一个 aceberg/exercisediary&#xff0c;版本选择 latest。 本文写作时&#xff0c; lat…

云计算基础-大页内存

大页内存功能概述 什么是大页内存 简单来说&#xff0c;就是通过增大操作系统页的大小来减小页表&#xff0c;从而避免快表缺失 主要应用场景 主要运用于内存密集型业务的虚拟机&#xff0c;比如对于运行数据库系统的虚拟机&#xff0c;采用HugePages(大页)后&#xff0c;可…

ubuntu22.04@laptop OpenCV Get Started: 011_edge_detection

ubuntu22.04laptop OpenCV Get Started: 011_edge_detection 1. 源由2. edge_detection应用Demo2.1 C应用Demo2.2 Python应用Demo 3. 重点逐步分析3.1 GaussianBlur去噪3.2 Sobel边缘检测3.2.1 SobelX方向边缘检测3.2.2 SobelY方向边缘检测3.2.3 SobelXY方向边缘检测 3.3 Canny…

PyTorch 快速安装 - 基于 JupyterHub 并运行 K8s

PyTorch 快速安装 - 基于 JupyterHub 并运行 K8s 运行 PyTorch 可以直接逻辑运行、容器中运行、KubeFlow 中运行以及基于 JupyterHub&#xff08;独立运行或运行在 K8s 之上&#xff09;等多种模式。这里介绍运行在 K8s 上基于 JupyterHub 的 PyTorch 方法&#xff0c;这也是运…

基于边缘计算的智能家居能源管理系统

一、项目背景 随着智能家居设备的普及&#xff0c;能源消耗问题日益凸显。为了更有效地管理家庭能源使用&#xff0c;减少浪费&#xff0c;并可能实现能源自给自足&#xff0c;我们提出了基于边缘计算的智能家居能源管理系统 该系统能够实时监控和分析家庭能源消耗数据&#xf…