Composition API

更好的代码组织方式

优势

  • 按逻辑聚合:相同业务代码放一起,不再被 options 拆散
  • 极致复用:抽取为 Composable 函数(Hooks),替代 Mixins
  • TypeScript:天然友好
  • Tree Shaking:按需引入,包体积小

setup 参数

props

响应式对象。解构会失去响应式:

// 错误
const { title } = props

// 正确
const { title } = toRefs(props)

context

普通对象,可以解构。包含:attrs、slots、emit、expose

script setup

Vue 3 推荐写法,更简洁:

const props = defineProps(['foo'])
const emit = defineEmits(['change'])
const slot = useSlots()
const attr = useAttrs()
defineExpose({ ... })

为什么没有 this?

setup 执行时机在 beforeCreate 之前,实例还没创建好。Vue 刻意去掉 this,强制用参数传递。