当前位置: 首页 > news >正文

如何使用 Vue 3 的 Composition API

Vue 3 引入了 Composition API,它提供了一种更灵活的方式来组织和重用逻辑。与 Vue 2 的 Options API 相比,Composition API 允许你将组件的逻辑按功能组织到函数中,而不是将它们分散到组件选项对象中。以下是如何在 Vue 3 中使用 Composition API 的基本步骤:

1. 引入必要的函数

首先,你需要从 vue 包中引入 refreactivecomputedwatchwatchEffect 等 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 来构建更灵活、更可维护的组件。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ICPC网络赛 以及ACM训练总结
  • adb install失败: INSTALL_PARSE_FAILED_NO_CERTIFICATES
  • 【QGC】把QGroundControl地面站添加到Ubuntu侧边菜单栏启动
  • ubuntu中QT+opencv在QLable上显示摄像头
  • java基于PDF底层内容流的解析对文本内容进行编辑
  • 计算机网络 第三章: 封装成桢和透明传输
  • 通用四期ARM架构银河麒麟桌面操作系统V10【安装、配置FTP服务端】
  • vue国际化
  • 十二,Spring Boot 异常处理(自定义异常页面,全局异常,自定义异常)
  • Golang数据流处理:掌握Reader和Writer接口的技巧
  • C++设计模式——Mediator中介者模式
  • RAII 与 std::lock_guard 在 C++ 中的应用:自动化互斥锁管理与线程安全
  • 【JavaScript】数据结构之字典 哈希表
  • HTML5下<hr>标签的CSS样式定制
  • 关于Linux Makefile的一些函数知识foreach、if、call、origin、shell、error和warning
  • [nginx文档翻译系列] 控制nginx
  • [译]如何构建服务器端web组件,为何要构建?
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Js基础——数据类型之Null和Undefined
  • Magento 1.x 中文订单打印乱码
  • Otto开发初探——微服务依赖管理新利器
  • PHP 7 修改了什么呢 -- 2
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Sublime text 3 3103 注册码
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vue2.0项目引入element-ui
  • Yeoman_Bower_Grunt
  • 对象管理器(defineProperty)学习笔记
  • 高程读书笔记 第六章 面向对象程序设计
  • 构建工具 - 收藏集 - 掘金
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 删除表内多余的重复数据
  • 使用docker-compose进行多节点部署
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 一份游戏开发学习路线
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 《码出高效》学习笔记与书中错误记录
  • linux 淘宝开源监控工具tsar
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​力扣解法汇总946-验证栈序列
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #etcd#安装时出错
  • #HarmonyOS:Web组件的使用
  • #pragma multi_compile #pragma shader_feature
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (vue)页面文件上传获取:action地址
  • (笔试题)合法字符串
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (一)UDP基本编程步骤
  • (一)基于IDEA的JAVA基础1
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在