setup
函数是 Vue 3 中的一个新特性,用于设置和组织组件的逻辑。它是 Composition API 的一部分,提供了在函数式组件中组织代码的一种新方式。
setup
函数主要用于:
-
设置响应式变量和函数: 在
setup
函数中,你可以使用ref
、reactive
、computed
等 API 来创建响应式的数据和计算属性,以及定义需要在模板中使用的变量和函数。 -
访问组件属性和上下文(context): 通过
props
、attrs
、slots
、emit
等参数,你可以在setup
函数中访问组件的属性、插槽、传递的事件等信息。这些参数是setup
函数的第一个参数,也被称为上下文对象。 -
设置生命周期钩子和侦听器: 使用
onMounted
、onUpdated
、onUnmounted
等函数可以定义组件的生命周期钩子。此外,还可以在setup
函数中使用watch
、watchEffect
等来创建侦听器,监听响应式数据的变化。 -
返回需要在模板中使用的数据和方法:
setup
函数需要返回一个对象,该对象中的属性和方法会暴露给模板使用。这些可以是响应式的数据、计算属性或者方法。
setup
函数的引入使得 Vue 组件的逻辑可以更加灵活地组织和管理。它使得组件中的代码可以按逻辑相关性而不是选项分组,有助于提高代码的可读性和可维护性。
例如,下面是一个简单的示例:
<template>
<div>
<p>Counter: {{ counter }}</p>
<button @click="increment">Increment</button>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
// 在 setup 函数中创建响应式变量
const counter = ref(0);
// 定义函数来增加计数器
const increment = () => {
counter.value++;
};
// 返回需要在模板中使用的数据和方法
return {
counter,
increment,
};
},
};
</script>
在这个示例中,setup
函数创建了一个计数器变量 counter
和一个 increment
函数,它们都被暴露给模板使用。counter
是一个响应式变量,每次按钮点击时都会增加其值,并且这些变化会反映在模板中。