在 Vue 3 中,setup
是一个全新的选项,它是 Vue 3 Composition API 的核心部分,取代了 Vue 2 中的 data
、methods
、computed
等选项。setup
函数的作用是为组件提供一个更灵活、更结构化的方式来声明和管理组件的响应式状态、计算属性、生命周期钩子等。它会在组件实例化之前被调用,提供一个函数作用域,里面可以访问组件的所有逻辑并定义组件的状态。
setup
的主要作用:
-
响应式数据的声明:
在setup
中,我们可以使用ref
或reactive
来声明响应式数据,而不需要像 Vue 2 中那样依赖data
选项。import { ref } from 'vue'; export default { setup() { const count = ref(0); return { count }; } };
-
计算属性的声明:
使用computed
来声明计算属性,可以在setup
中直接定义。import { ref, computed } from 'vue'; export default { setup() { const count = ref(0); const doubledCount = computed(() => count.value * 2); return { count, doubledCount }; } };
-
方法的定义:
在setup
中,我们可以直接定义函数作为组件的方法。import { ref } from 'vue'; export default { setup() { const count = ref(0); const increment = () => { count.value++; }; return { count, increment }; } };
-
生命周期钩子:
setup
中可以使用 Vue 3 提供的生命周期钩子,如onMounted
、onUpdated
、onUnmounted
等。import { onMounted } from 'vue'; export default { setup() { onMounted(() => { console.log('组件已挂载'); }); } };
-
依赖注入:
setup
允许访问上下文对象,比如props
、context
和attrs
,其中props
是父组件传递给当前组件的数据。import { defineProps } from 'vue'; export default { setup() { const props = defineProps(); console.log(props); // 可以访问父组件传递的 props } };
总结:
setup
是 Vue 3 中 Composition API 的核心,用于:
- 声明响应式状态(
ref
和reactive
)。 - 定义计算属性(
computed
)。 - 编写方法和事件处理函数。
- 使用生命周期钩子。
- 提供更清晰的组件逻辑组织,特别是在大型应用中,能够提高可维护性和重用性。
它比 Vue 2 的选项 API 更具灵活性,允许你将组件逻辑分割成更小的函数,而不仅仅依赖于传统的选项式写法。