Skip to content

Vue 3:组合式 API、setup、生命周期与 Composables

一、何为组合式 API

  • Options API:按 datamethods 等选项切分,逻辑易随规模碎片化。
  • Composition API:以 setup(或 <script setup>)为中心,把同一功能的 state/effect/生命周期写在一起,便于阅读与抽离。

相对 Options 的优势

  • 逻辑聚合;Composable 替代 mixin;TS 友好;无 mixin 暗冲突。

二、setup<script setup>

setup 选项

  • 入参:propscontextattrsslotsemit 等)。
  • 返回值:暴露给模板的对象(或使用渲染函数则另论)。

<script setup>(编译期语法糖)

  • 无需 return:顶层绑定自动暴露模板。
  • 组件:import 即用。
  • props/emitsdefineProps / defineEmits 宏。
  • 性能:编译器可做更多静态分析。

三、生命周期映射

Options → Composition

Vue 2(选项)Vue 3(组合式)
beforeCreate / createdsetup:在选项式中与官方生命周期顺序一致,为 beforeCreate 之后、created 之前;纯 <script setup> 下通常不再单独写这两项,同步初始化写在 setup 顶层即可
beforeMountonBeforeMount
mountedonMounted
beforeUpdateonBeforeUpdate
updatedonUpdated
beforeDestroyonBeforeUnmount
destroyedonUnmounted
activated / deactivatedonActivated / onDeactivated

调试钩子

  • onRenderTracked
  • onRenderTriggered

仅开发期排查渲染依赖时使用。

执行顺序

父子生命周期仍呈「父先进入、子先挂载完毕再父 mounted」等洋葱规律;写法换成函数钩子,语义不变。


四、自定义 Hook / Composable

约定

  • 函数名 useXxx
  • 返回模板所需响应式状态与方法。
  • 内部可用任意组合式 API 与生命周期。

示例

  • useCounter:计数加减复位。
  • useUserList:挂载请求列表、暴露刷新与行操作。

工程实践

页面尽量薄:逻辑进 use*,组件专注视图组合。


五、小结

  • 入口setup / <script setup>
  • 生命周期onMounted 等函数需从 vue 引入。
  • 复用:Composable 替代 mixin。

下一章:侦听器与内置能力