如何使用 Vue 3 的 Composition API
Vue 3 引入了 Composition API,它提供了一种更灵活的方式来组织和重用逻辑。与 Vue 2 的 Options API 相比,Composition API 允许你将组件的逻辑按功能组织到函数中,而不是将它们分散到组件选项对象中。以下是如何在 Vue 3 中使用 Composition API 的基本步骤:
1. 引入必要的函数
首先,你需要从 vue 包中引入 ref、reactive、computed、watch、watchEffect 等 Composition API 提供的函数。这些函数允许你创建响应式状态、计算属性和侦听器。
javascript复制代码
import { ref, reactive, computed, watch, watchEffect } from 'vue'; |
2. 使用 setup 函数
setup 函数是 Composition API 的入口点。它是组件中所有 Composition API 调用的地方。setup 函数在组件创建之前被调用,并且它会在 beforeCreate 和 created 生命周期钩子之前执行。
javascript复制代码
export default { | |
setup() { | |
// 你的 Composition API 代码将放在这里 | |
} | |
}; |
3. 创建响应式状态
使用 ref 或 reactive 来创建响应式状态。ref 用于基本数据类型,而 reactive 用于对象或数组。
javascript复制代码
const count = ref(0); | |
const person = reactive({ | |
name: 'Alice', | |
age: 30 | |
}); |
4. 使用计算属性和侦听器
你可以使用 computed 来创建计算属性,使用 watch 或 watchEffect 来侦听响应式状态的变化。
javascript复制代码
const doubleCount = computed(() => count.value * 2); | |
watchEffect(() => { | |
console.log(`Count is: ${count.value}`); | |
}); | |
watch(count, (newValue, oldValue) => { | |
console.log(`Count changed from ${oldValue} to ${newValue}`); | |
}); |
5. 暴露给模板
setup 函数需要返回所有需要在模板中使用的响应式状态、计算属性、方法等。
javascript复制代码
export default { | |
setup() { | |
const count = ref(0); | |
const increment = () => { | |
count.value++; | |
}; | |
return { | |
count, | |
increment | |
}; | |
} | |
}; |
6. 在模板中使用
现在,你可以在模板中像使用其他组件选项一样使用 count 和 increment。
html复制代码
<template> | |
<div> | |
<p>{{ count }}</p> | |
<button @click="increment">Increment</button> | |
</div> | |
</template> |
7. 使用生命周期钩子
Composition API 提供了与 Options API 相同的生命周期钩子,但你需要从 vue 中显式导入它们,并在 setup 函数中使用。
javascript复制代码
import { onMounted, onUnmounted } from 'vue'; | |
export default { | |
setup() { | |
onMounted(() => { | |
console.log('Component is mounted!'); | |
}); | |
onUnmounted(() => { | |
console.log('Component is unmounted!'); | |
}); | |
// ... 其他 Composition API 代码 | |
} | |
}; |
8. 组件间的通信
Composition API 并没有改变 Vue 的组件间通信方式(如 props、emit、provide/inject、Vuex、Vue Router 等)。但是,你可以将逻辑封装在自定义的 Composition API 函数中,并在多个组件之间重用这些函数,从而实现更高效的代码复用。
通过遵循这些步骤,你可以开始在你的 Vue 3 项目中使用 Composition API 来构建更灵活、更可维护的组件。
相关文章:
如何使用 Vue 3 的 Composition API
Vue 3 引入了 Composition API,它提供了一种更灵活的方式来组织和重用逻辑。与 Vue 2 的 Options API 相比,Composition API 允许你将组件的逻辑按功能组织到函数中,而不是将它们分散到组件选项对象中。以下是如何在 Vue 3 中使用 Compositio…...
Mamba环境配置教程【自用】
1. 新建一个Conda虚拟环境 conda create -n mamba python3.102. 进入该环境 conda activate mamba3. 安装torch(建议2.3.1版本)以及相应的 torchvison、torchaudio 直接进入pytorch离线包下载网址,在里面寻找对应的pytorch以及torchvison、…...
2021 年 6 月青少年软编等考 C 语言二级真题解析
目录 T1. 数字放大思路分析 T2. 统一文件名思路分析 T3. 内部元素之和思路分析 T4. 整数排序思路分析 T5. 计算好数思路分析 T1. 数字放大 给定一个整数序列以及放大倍数 x x x,将序列中每个整数放大 x x x 倍后输出。 时间限制:1 s 内存限制&#x…...
2024网络安全、应用软件系统开发决赛技术文件
用软件系统开发技术方案 一、竞赛项目 2024 年全国电子信息行业第二届职工技能竞赛四川省应用 软件系统开发选拔赛分理论比赛和实际操作两个部分。理论比赛 成绩占30%,实际操作成绩占70%。 二、理论比赛 1、理论比赛范围 ①计算机系统基础知识: …...
CSP-J初赛每日题目2(答案)
二进制数 00100100和 00010100 的和是( )。 A.00101000 B.01100111 C.01000100 D.00111000 正确答案: D \color{green}{正确答案: D} 正确答案:D 解析: \color{red}{解析:} 解析: 00100100 36 \color{r…...
为什么Node.js不适合CPU密集型应用?
Node.js不适合CPU密集型应用的原因主要基于其设计理念和核心特性,具体可以归纳为以下几点: 单线程模型 Node.js采用单线程模型来处理用户请求和异步I/O操作。虽然这种模型在处理高并发I/O密集型任务时非常高效,因为它避免了传统多线程模型中的…...
数模原理精解【12】
文章目录 广义线性模型多元回归中的 R 2 R^2 R2(也称为决定系数)一、定义二、性质三、计算四、例子五、例题 偏相关系数一、定义二、计算三、性质四、例子 多元回归相关定义性质假设检验定义计算性质检验方法例子和例题例子例题例子 参考文献 广义线性模…...
steamdeck执行exe文件
命令行安装: sudo pacman xxxx //"xxxx"为软件名 ,或者搜索“arch linux 软件安装命令” 安装wine及wineZGUI 命令行输入: sudo pacman -S wine 后面需要输入密码,deck设置的用户密码即可(输入无反应是正…...
三、集合原理-3.2、HashMap(下)
3.2、HashMap(下) 3.2.2、单线程下的HashMap的工作原理(底层逻辑)是什么? 答: HashMap的源码位于Java的标准库中,你可以在java.util包中找到它。 以下是HashMap的简化源码示例,用于说明其实现逻辑&#…...
【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色??
【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色?? Activation Function——在卷积神经网络中的激活函数是一个什么样的角色?? 文章目录 【激活函数】Activation Function——在卷积神经网络中…...
重生之我在Java世界------学单例设计模式
什么是单例设计模式? 单例模式是面向对象编程中最简单却又最常用的设计模式之一。它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的原理、常见实现方法、优缺点,以及在使用过程中可能遇到的陷阱。 单…...
快速提升Python Pandas处理速度的秘诀
大家好,Python的Pandas库为数据处理和分析提供了丰富的功能,但当处理大规模数据时,性能问题往往成为瓶颈。本文将介绍一些在Pandas中进行性能优化的方法与技巧,帮助有效提升数据处理速度,优化代码运行效率。 1.数据类…...
在基于线程的环境中运行 MATLAB 函数
MATLAB 和其他工具箱中的数百个函数可以在基于线程的环境中运行。可以使用 backgroundPool 或 parpool("threads") 在基于线程的环境中运行代码。 要在后台运行函数,请使用 parfeval 和 backgroundPool。 具体信息可以参考Choose Between Thread-B…...
黑神话悟空+云技术,游戏新体验!
近期,一款名为黑神话悟空的游戏因其独特的艺术风格和创新的技术实现在玩家中产生了不小的影响。 而云桌面技术作为一种新兴的解决方案,正在改变人们的游戏体验方式,使得高性能游戏可以在更多设备上流畅运行。 那么,黑神话悟空如…...
【Android 13源码分析】WindowContainer窗口层级-3-实例分析
在安卓源码的设计中,将将屏幕分为了37层,不同的窗口将在不同的层级中显示。 对这一块的概念以及相关源码做了详细分析,整理出以下几篇。 【Android 13源码分析】WindowContainer窗口层级-1-初识窗口层级树 【Android 13源码分析】WindowCon…...
Redis常用操作及springboot整合redis
1. Redis和Mysql的区别 数据模型:二者都是数据库,但是不同的是mysql是进行存储到磁盘当中,而Redis是进行存储到内存中. 数据模型 : mysql的存储的形式是二维表而Redis是通过key-value键值对的形式进行存储数据. 实际的应用的场景: Redis适合于需要快速读写的场景&…...
动态规划day34|背包理论基础(1)(2)、46.携带研究材料(纯粹的01背包)、416. 分割等和子集(01背包的应用)
动态规划day34|背包理论基础(1)(2)、46.携带研究材料、416. 分割等和子集 背包理论基础(1)——二维背包理论基础(2)——一维46.携带研究材料(卡码网 01背包)1. 二维背包2. 一维背包 …...
pytorch优化器
在反向传播计算完所有参数的梯度后,还需要使用优化方法更新网络的权重和参数。例如,随机梯度下降法(SGD)的更新策略如下: weight weight - learning_rate * gradient 手动实现如下: learning_rate 0.01 …...
必备工具,AI生成证件照,再也不用麻烦他人,电子驾驶证等多种证件照一键生成
最近有一个生成证件照的开源项目很火,今天我们来学习一下。之前我生成证件照都是线下去拍照,线上使用也是各种限制,需要付费或看广告,而且效果也不是很理想, 今天要分享的这个 AI 证件照生成工具可以一键可以生成一寸…...
深度解析 MintRich 独特的价格曲线机制玩法
随着 Meme 币赛道的迅速崛起,NFT 市场也迎来了新的变革。作为一个创新的 NFT 发行平台,Mint.Rich 正掀起一场全民参与的 NFT 热潮。其简易的操作界面和独特的价格曲线设计,让任何人都能以极低的门槛发行和交易自己的 NFT,从而参与…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
