【前端框架】Vue3 中 `setup` 函数的作用和使用方式

embedded/2025/2/19 15:09:46/

在这里插入图片描述

在 Vue 3 里,setup 函数是组合式 API 的核心入口,为开发者提供了更灵活、高效的组件逻辑组织方式。以下为你详细介绍其作用和使用方式:

作用

1. 初始化响应式数据

setup 函数中,我们能够使用 refreactive 等函数来创建响应式数据。ref 常用于创建单个响应式值,而 reactive 则更适合创建响应式对象或数组。这些响应式数据会在组件状态发生变化时自动更新与之绑定的 DOM。

2. 组织和复用逻辑

通过 setup 函数,可以将相关的逻辑封装成独立的函数,然后在 setup 中调用这些函数,实现逻辑的复用。这种方式使得代码结构更加清晰,易于维护和扩展。

3. 注册生命周期钩子和监听事件

setup 函数内部,可以使用 onMountedonUpdatedonUnmounted 等函数来注册生命周期钩子,还能使用 watch 函数监听数据的变化。这样可以在组件的不同生命周期阶段执行特定的操作。

4. 提供数据和方法给模板使用

setup 函数返回的数据和方法可以在模板中直接使用,实现了数据和视图的绑定。

使用方式

1. 基本结构

setup 函数在组件中使用时,它接收两个参数:propscontextprops 是父组件传递给子组件的属性,context 是一个包含 attrsslotsemit 的对象。

<template><div><!-- 使用 setup 函数返回的数据 --><p>{{ message }}</p><button @click="increment">Increment</button></div>
</template><script>
import { ref } from 'vue';export default {setup(props, context) {// 创建响应式数据const message = ref('Hello, Vue 3!');const count = ref(0);// 定义方法const increment = () => {count.value++;};// 返回数据和方法供模板使用return {message,count,increment};}
};
</script>
2. 使用 script setup 语法糖

Vue 3 提供了 script setup 语法糖,它简化了 setup 函数的使用,无需显式地返回数据和方法,在模板中可以直接使用在 script setup 中定义的变量和函数。

<template><div><p>{{ message }}</p><button @click="increment">Increment</button></div>
</template><script setup>
import { ref } from 'vue';// 创建响应式数据
const message = ref('Hello, Vue 3!');
const count = ref(0);// 定义方法
const increment = () => {count.value++;
};
</script>
3. 访问 propscontext

setup 函数中,可以通过参数访问 propscontext

<template><div><p>{{ props.title }}</p></div>
</template><script>
export default {props: {title: String},setup(props, context) {// 访问 propsconsole.log(props.title);// 访问 contextconsole.log(context.attrs);console.log(context.slots);console.log(context.emit);return {};}
};
</script>
4. 注册生命周期钩子和监听事件

setup 函数中,可以使用 onMountedwatch 等函数来注册生命周期钩子和监听事件。

<template><div><p>{{ count }}</p></div>
</template><script setup>
import { ref, onMounted, watch } from 'vue';const count = ref(0);// 注册生命周期钩子
onMounted(() => {console.log('Component mounted');
});// 监听数据变化
watch(count, (newValue, oldValue) => {console.log(`Count changed from ${oldValue} to ${newValue}`);
});
</script>

通过上述的作用和使用方式,setup 函数为 Vue 3 组件开发带来了更强大的功能和更灵活的代码组织能力。


http://www.ppmy.cn/embedded/162567.html

相关文章

sql注入之盲注(bool盲注,时间盲注)

bool盲注 使用场景: 当页面不会返回明确的数据库错误信息&#xff0c;但能通过页面内容/状态的差异间接判断SQL语句执行结果时。 原理: 攻击者通过构造布尔条件&#xff08;如 AND 11、OR 12&#xff09;&#xff0c;观察页面的响应差异。 通过逐字符猜测目标数据&#xff…

全平台搭载旭日5!科沃斯GOAT智能割草机器人全新系列正式开售

要闻 近日&#xff0c;科沃斯全新发布的GOAT A Series 和 GOAT O Series割草机器人&#xff0c;将在多国市场正式上市发售。作为业界最强的割草机器人产品之一&#xff0c;GOAT致力为割草机带来基于机器人视觉的专业定位解决方案。科沃斯GOAT全新系列产品全平台搭载地瓜机器人…

2.14日学习总结

题目一&#xff1a;接雨水问题 1.题目描述&#xff1a;给定一个数组 height 表示一个地形的高度图&#xff0c;数组中的每个元素代表每个宽度为 1 的柱子的高度。计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 2.示例&#xff1a;输入 height [0,1,0,2,1,0,1,3,2,1…

1.【线性代数】——方程组的几何解释

一 方程组的几何解释 概述举例举例一1. matrix2.row picture3.column picture 概述 三种表示方法 matrixrow picturecolumn picture 举例 举例一 { 2 x − y 0 − x 2 y 3 \begin{cases} 2x - y 0 \\ -x 2y 3 \end{cases} {2x−y0−x2y3​ 1. matrix [ 2 − 1 − 1 …

Golang的容器化部署流程

# Golang的容器化部署流程 什么是容器化部署 容器化部署是将应用程序、运行环境及其依赖项打包在一起&#xff0c;以便可以在任何环境中快速、一致地运行的技术。它提供了更高效的资源利用、更便捷的部署和更稳定的环境。 的容器化支持 天生支持跨平台编译&#xff0c;使得将Go…

【鸿蒙】从网页打开获取文件,并转成base64

鸿蒙原生代码 import web_webview from ohos.web.webview; import picker from ohos.file.picker; import { BusinessError } from ohos.base; import { fileIo } from kit.CoreFileKit; import util from ohos.util;Entry Component struct UploadFile {controller:web_webvi…

中间件系列--【运维手册规范】

一、常用集群副本数设置规范 1.HDFS DataNode数量为<2,则副本数为1DataNode数量3,副本数为2DataNode数量>3,副本数为3 2.Kafka 分区数为Broker数量的1-2倍Broker数量<2,副本数为1Broker数量3,副本数为2Broker数量>3,副本数为3 3.ElasticSearch 分片数为Es Data Nod…

小米 R3G 路由器(Pandavan)实现网络打印机功能

小米 R3G 路由器&#xff08;Pandavan&#xff09;实现网络打印机功能 一、前言 家中有多台 PC 设备需要打印服务&#xff0c;但苦于家中的 Epson L380 打印机没有网络打印功能&#xff0c;并且配置 Windows 共享打印机实在是过于繁琐且需要共享机保持唤醒状态过于费电。想到…