tnblog
首页
视频
资源
登录

Vue 3的Composition API介绍

1074人阅读 2024/9/16 22:43 总访问:850681 评论:0 收藏:0 手机
分类: 前端

Vue 3 引入了一个新的核心特性,即 Composition API,它提供了一种更灵活、更强大的方式来组织和重用逻辑。与 Vue 2 的 Options API 相比,Composition API 允许你以一种更接近 JavaScript 函数的方式来编写组件逻辑,这特别有利于大型组件和逻辑的重用。

主要概念

1.setup() 函数

  • setup() 是 Composition API 的入口点,它是一个在组件创建之前被调用的同步函数。
  • 它会在 beforeCreate 和 created 生命周期钩子之前被调用,是第一个被调用的组件生命周期钩子。
  • setup() 函数的返回值会暴露给模板和组件的其他选项(如计算属性、方法等)。

2. 响应式引用(Reactive References)

  • Vue 3 引入了 reactive 和 ref 函数来创建响应式状态。
  • reactive 用于创建对象类型的响应式状态。
  • ref 用于创建基本数据类型的响应式状态(如数字、字符串等),并返回一个响应式且可变的引用对象。

3. 计算属性和监视器(Computed and Watchers)

  • computed 允许你定义基于响应式状态的只读派生状态。
  • watch 和 watchEffect 允许你观察响应式状态的变化并运行副作用(即当状态变化时执行的函数)。
  • watchEffect 在组件首次渲染后立即执行,并在其依赖的响应式状态发生变化时重新执行。

4. 生命周期钩子

  • Composition API 提供了与 Options API 中相同的生命周期钩子,但需要在 setup() 函数中通过 onMounted、onUpdated 等函数的形式导入并使用。

5. 组合函数(Composition Functions)

组合函数是可复用的代码逻辑片段,它们可以接受响应式状态作为参数并返回新的响应式状态或副作用函数。
这有助于将组件逻辑分割成更小的、可复用的部分。

示例

  1. import { ref, onMounted } from 'vue';
  2. export default {
  3. setup() {
  4. const count = ref(0);
  5. function increment() {
  6. count.value++;
  7. }
  8. onMounted(() => {
  9. console.log(`Mounted with count: ${count.value}`);
  10. });
  11. return {
  12. count,
  13. increment
  14. };
  15. }
  16. }

在上面的例子中,我们创建了一个响应式引用 count 和一个方法来增加它的值。我们还使用 onMounted 生命周期钩子来在组件挂载时打印一条消息。最后,我们将 count 和 increment 暴露给模板,以便在模板中使用它们。

总结

Vue 3 的 Composition API 提供了一种更灵活、更强大的方式来编写 Vue 组件。它通过将组件逻辑组织到可复用的函数中,使得大型组件的维护变得更加容易。此外,它还提供了更直观的响应式状态和副作用的管理方式。


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

Vue 3入门介绍

一、Vue 3简介Vue.js是一个流行的JavaScript框架,用于构建用户界面。Vue 3是Vue.js的最新版本,它引入了许多新功能和改进...

Vue 3 中 watch与watchEffect区别

在Vue 3的Composition API中,watch和watchEffect都是用于侦听响应式数据的变化,但它们之间有一些关键的区别。以下是它们...

vue3 跨组件方法调用。Vue 3 Provide / Inject 与 mitt

mitt 是一个轻量级的事件发射器(event emitter),它可以很容易地集成到 Vue 3 应用中。 下面是一个使用 Vue 3 的 provid...

cAPS.NET 保存base64位格式图片

publicvoidUpload() { //取出图片对应的base64位字符 stringimgBase=Request["imgBase"]; //c#里边的base6...

使用OLEDB读取不同版本Excel连接字符串设置

使用OleBD读取excel的时候,excel不同的版本,连接字符串的写法也会不一样。///<summary> ///读取excel ///</su...

vs2017 对 COM 组件调用返回了错误 HRESULT E_FAIL

vs2017添加引用报错 对 COM 组件的调用返回了错误 HRESULT E_FAIL 1.以管理员身份打开vs2017开发人员命令指示符 2...

分布式服务架构与微服务架构概念区别与联系

分布式:分散压力。微服务:分散能力。当下理解分布式:不同模块部署在不同服务器上作用:分布式解决网站高并发带来问题集...

分布式-微服务-集群区别

1.分布式将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上,各个业务模块之间通过接口进行数据交互。区...

EasyUI弹窗批量修改combogrid下拉框

JS方法//点击弹出批量修改框 UpdateLot:function(){ varrow=$("#dg").datagrid("getChecked"); if(...

js与Controller中分割字符串方法

js: varstr=OpenRule; varstrs=newArray(); strs=str.split(","); for(vari=0;i<strs.length;i++){ $(&q...

如何修改重置MD5加密后SQL用户密码

二次开发时,要加一个忘记密码的功能,后台写了修改密码的方法,数据库执行也修改成功,但是登录一直提示密码错误。之所以...

如何修改CSS中存在element.style内联样式

改腾讯地图的时候调整了下样式,发现样式一直存在问题,修改style里面的值,一点用都没有,html中这个值还找不到是在哪里出...

微信交易单号和订单号区别

一般第三方在线支付系统中都会有两类订单号transactionId 为支付系统的订单号,由支付系统生成,并在回调时传回给商户,用...

C ?、?? 问号和2个问号用法(类型?、对象?)

C# ?C# ???:单问号1.定义数据类型可为空。可用于对int,double,bool等无法直接赋值为null的数据类型进行null的赋值如这...

C out、ref关键字用法和区别

说说自己对out、ref的认识,面试问到的几率很高哟。out:classProgram { /* *out、ref都是引用传递,传递后使用都会改变...
这一生多幸运赶上过你.
排名
8
文章
231
粉丝
7
评论
7
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术