【Vue3 组合式 API - setup 选项详解】

news/2024/11/14 15:45:38/

文章目录

  • 前言
  • 一、什么是 setup 选项?
  • 二、使用步骤
    • 1. 引入 Vue 和 setup 函数
    • 2. 编写逻辑
    • 3. 在模板中使用
  • 三、与 Options API 对比


前言

setup 选项是 Vue 3 中最重要的部分之一,允许在组件中使用逻辑复用和组合,取代了 Vue 2.x 中的 Options API 和 Mixins。


一、什么是 setup 选项?

在 Vue 3 中,每个组件都可以包含一个 setup 函数,这个函数会在组件实例被创建之前执行。setup 函数接收两个参数:propscontext。其中,props 是组件的属性对象,而 context 包含了一些与组件实例相关的信息,比如 attrsslots 等。

setup 函数的返回值可以是一个对象,该对象中包含了组件内部需要使用的响应式数据、计算属性、方法等。这些数据和方法可以被模板直接使用,实现了逻辑的复用和组件的解耦。


二、使用步骤

1. 引入 Vue 和 setup 函数

import { defineComponent } from 'vue';export default defineComponent({setup(props, context) {// 在这里编写逻辑}
});

2. 编写逻辑

import { ref, computed } from 'vue';export default defineComponent({setup(props, context) {// 响应式数据const count = ref(0);// 计算属性const doubleCount = computed(() => count.value * 2);// 方法const increment = () => {count.value++;};// 返回数据和方法return {count,doubleCount,increment};}
});

3. 在模板中使用

<template><div><p>Count: {{ count }}</p><p>Double Count: {{ doubleCount }}</p><button @click="increment">Increment</button></div>
</template>

三、与 Options API 对比

相比于 Vue 2.x 中的 Options API,setup 提供了更灵活和强大的方式来组织和管理组件的逻辑。

  • 逻辑复用setup 使逻辑可以更容易地进行复用,而不是依赖于 Mixins。
  • 更直观setup 函数的代码更加直观和清晰,易于理解和维护。
  • 更好的类型推导:由于 setup 是在编译阶段执行的,可以更好地推导出数据的类型,提高了代码的可读性和健壮性。
  • 更好的 TypeScript 支持setup 可以更好地与 TypeScript 集成,提供了更好的类型推断和错误提示。

http://www.ppmy.cn/news/1381982.html

相关文章

每日一题——LeetCode1678.设计Goal解析器

方法一 splice 将字符串转为数组&#xff0c;对数组进行遍历&#xff0c;碰到G保持不变&#xff0c;继续循环&#xff0c;碰到 ( 看他后一位&#xff0c;是 ) 则删除两个元素&#xff0c;添加一个 o &#xff0c;不是则删除四个元素&#xff0c;添加元素 al &#xff0c;最后将…

【阿里云系列】-基于云效构建部署Springboot项目到ACK

介绍 为了提高项目迭代的速度加速交付产品给客户&#xff0c;我们通常会选择CICD工具来减少人力投入产生的成本&#xff0c;开源的工具比如有成熟的Jenkins&#xff0c;但是本文讲的是阿里云提高的解决方案云效平台&#xff0c;通过配置流水线的形式实现项目的快速部署到服务器…

数据结构:红黑树的模拟实现

目录 1、什么是红黑树&#xff1f; 2、红黑树的相关操作与实现 1、节点定义 2、查找操作 3、插入操作 1、cur为红&#xff0c;p为红&#xff0c;g为黑&#xff0c;cur存在且为红 2、cur为红&#xff0c;p为红&#xff0c;g为黑&#xff0c;u不存在/u存在且为黑 4、判断…

带你摸透C语言相关内存函数

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

vue,pinia中store赋值,推荐使用computed,能做到响应,直接解构赋值做不到,备忘

官网解读 https://pinia.vuejs.org/zh/core-concepts/ 在这段Vue3 <script setup> 语法的代码中&#xff0c;有两个关于如何从 useCounterStore 返回的store对象中获取状态属性的方式进行了对比。 <script setup> import { useCounterStore } from /stores/count…

力扣-[700. 二叉搜索树中的搜索]

递归法 确定递归函数的参数和返回值 递归函数的参数传入的就是根节点和要搜索的数值&#xff0c;返回的就是以这个搜索数值所在的节点。 代码如下&#xff1a; public TreeNode searchBST(TreeNode root, int val) 确定终止条件 如果root为空&#xff0c;返回null&#xff0c…

xss.pwnfunction.com靶机 Warmups

通关要求弹出警告框alert(1337) 没有用户交互 不能使用外链接 在chrome中测试 Ma Spaghet! 通过分析代码我们可以看到它直接用innerHTML将接收的内容赋值 但是我们不能使用<script>标签因为&#xff1a;HTML 5 中指定不执行由 innerHTML 插入的 <script> 标签。 所…

flume系列之:为flume agent组增加新的节点,提高flume agent组消费能力

flume系列之:为flume agent组增加新的节点,提高flume agent组消费能力 一、拷贝服务的systemctl文件二、拷贝jmx导出程序三、拷贝jmx导出数据格式配置文件四、拷贝flume agent配置五、启动flume agent和jmx服务一、拷贝服务的systemctl文件 flume agent服务flume agent jmx服…