setup() 函数与语法糖

文章目录

一、先一句话总纲

javascript 复制代码
- setup():Vue3 原来的原始写法,手动挡,要写 return,麻烦。

```javascript
- <script setup>:官方给的语法糖(简写版),自动挡,不用 return,代码更少,现在全都用这个。

 

二、先讲最原始的:setup() 函数

你就把它理解成:

组件的入口函数,比 beforeCreate 还早执行。

  1. 里面没有 this

this = undefined

不能用 this.$refs、this.message 之类。

  1. 接收两个参数
javascript 复制代码
js
  
setup(props, context) {
}
  • props:父组件传过来的值(响应式,但不能改)
  • context:里面有 emit、attrs、slots
  1. 必须 return!

你在 setup 里定义的变量、方法,

不 return,模板就看不见!

javascript 复制代码
js
  
setup() {
  const count = ref(0)
  return { count } // 不 return 模板用不了
}

缺点

麻烦、啰嗦、要写一堆重复代码。

三、再讲现在主流:

它就是:

Vue 帮你自动把代码塞进 setup() 里,还自动 return。

  1. 不用写 return

你定义啥,模板直接用:

vue

javascript 复制代码
<script setup>
const count = ref(0)
</script>
javascript 复制代码
<template>
  {{ count }}  <!-- 直接用!不用 return -->
</template>
 
  1. 导入组件就能用
javascript 复制代码
js
  
import Child from './Child.vue'
 

直接在模板用 ,不用注册!

原始写法还要:

javascript 复制代码
js
  
export default {
  components: { Child }
}

script setup 全都省了。

四、两者功能对比(最关键)

javascript 复制代码
1. 接收 props
 
原始 setup:
 
js
  
export default {
  props: ['title'],
  setup(props) {
    console.log(props.title)
  }
}
 
 
script setup:
 
js
  
const props = defineProps({
  title: String
})
 
 
2. 触发事件 emit
 
javascript 复制代码
原始 setup:
 
js
  
setup(props, { emit }) {
  emit('my-event')
}
 
 
script setup:
 
js
  
const emit = defineEmits(['my-event'])
emit('my-event')
 
 
3. 获取 attrs、slots
 
原始 setup 用 context:
 
js
  
setup(props, { attrs, slots })
 
 
script setup 用 API:
 
js
  
import { useAttrs, useSlots } from 'vue'
const attrs = useAttrs()
const slots = useSlots()
 
 
 
 

五、最核心区别(背这一段就够)

  1. setup()
  • 手动写,手动 return
  • 要写 export default、components
  • 代码多,适合老项目、复杂控制
  • 不用 return
  • 导入组件直接用
  • 用 defineProps / defineEmits
  • 现在官方推荐、所有人都用这个

六、你能立刻记住的超级口诀

  • 原始 setup:手动挡,要 return,麻烦。
  • script setup:自动挡,不用 return,简洁好用。
  • 功能一模一样,只是写法不一样。
  • 现在开发全都用 script setup。

七、我再用最通俗的话总结一遍

javascript 复制代码
> - setup() 是基础版本,什么都要自己写
>  - <script setup> 是懒人舒适版,Vue 帮你把重复的事全干了。
> - 它们底层跑起来是一样的。
> - 你以后写 Vue3,直接用 <script setup> 就对了

八、注册(components)不能写在setup函数里

  1. 先看注册(components)

    Vue 知道:我能用哪些组件,叫什么名字。

  2. 再解析模板

    看到 ,去表里查:有这个名字,认识。

  3. 最后才执行 setup

    去运行子组件自己的逻辑,生成数据、渲染内容。

相关推荐
PieroPc44 分钟前
CAMWATCH — 局域网摄像头监控系统 Fastapi + html
前端·python·html·fastapi·监控
巴巴博一2 小时前
2026 最新:Trae / Cursor 一键接入 taste-skill 完整教程(让 AI 前端告别“AI 味”)
前端·ai·ai编程
kyriewen2 小时前
半夜三点线上崩了,AI替我背了锅——用AI排错,五分钟定位三年老bug
前端·javascript·ai编程
kyriewen2 小时前
我让 AI 当了 24 小时全年无休的“毒舌考官”
前端·ci/cd·ai编程
hexu_blog2 小时前
vue+java实现图片批量压缩
java·前端·vue.js
IT_陈寒3 小时前
为什么你应该学习JavaScript?
前端·人工智能·后端
lifejump3 小时前
Empire(帝国)CMS 7.5 XSS注入
前端·安全·xss
无风听海3 小时前
OAuth 2.0 前端通道与后端通道深入剖析
前端·oauth
sakiko_3 小时前
UIKit学习笔记8-发送照片、拍摄照片并发送
前端·swift·uikit