script setup 是个啥?
它是 Vue3 的一个新语法糖,setUp从生命周期上来讲,等于beforeCreate和created,所以composition API是没有beforeCreate和created生命周期。在 setup 中。所有 ES 模块导出都是暴露给上下文的值,并包含在 setup() 返回对象中。相对于之前的写法,使用后,语法也变得更简单。
使用方式极其简单,仅需要在 script 标签加上 setup 关键字即可。
自动注册组件
在 script setup 中,引入的组件可以直接使用,无需再通过components进行注册,并且无法指定当前组件的名字,它会自动以文件名为主,也就是不用再写name属性了。
属性和事件
- defineProps
- defineProps 是
vue3提供的方法,不需要引入可以直接使用,用于子组件接收父组件传递的参数,且只读不可更改.
- defineProps 是
- defineEmits
- defineEmits 属性:用于创建自定义事件,接收子组件传递过来的数据
代码实列:
const props = defineProps({
name: String,
age: Number
})
const emit = defineEmits(['change','delete'])
// js 中使用
function onDelete(){
emit('delete', '参数')
}
// template 中使用
<button @click="$emit('change', '参数')"></button>
defineExpose API
传统的写法,我们可以在父组件中,通过 ref 实例的方式去访问子组件的内容,但在 script setup 中,该方法就不能用了,setup 相当于是一个闭包,除了内部的 template模板,谁都不能访问内部的数据和方法。
如果需要对外暴露 setup 中的数据和方法,需要使用 defineExpose API。示例:
import { defineExpose } from 'vue'
const a = 1
const b = 2
defineExpose({
a
})