# defineOptions
# 背景
- 有
<script setup>
之前,如果需要定义 props,emits 可以轻而易举的添加一个与 setup 平级的属性 - 但是用了
<script setup>
后,就没法这么干了 setup 属性已经没有了,自然无法添加与其平级的属性
为了解决这一问题,引入了 defineProps
与 defineEmits
这两个宏,但这只解决了 props 与 emit 两个属性,如果我们要定义组件的 name 或其它自定义属性,还是要回到最原始的方法 —— 再添加一个普通的 <script>
标签,这是就会存在两个 <script>
标签,让人无法接受
# defineOptions
在 Vue3.3 中引入 defineOptions 宏,顾名思义,主要是用来定义 Options API 的选项,可以用 defineOptions 定义任意选项,props,emits,expose,slots 除外
<script setup> | |
defineOptions({ | |
name: 'Foo', | |
inheritAttrs: false | |
}) | |
</script> |
# defineModel
在 vue3 中,自定义组件上使用 v-model
,相当于传递一个 modelValue
属性,同时触发 update:modelValue
事件
<template> | |
<Child v-model="isVisible"> | |
</template> |
<script setup> | |
const modelValue = defineModel() | |
modelValue.value++ | |
</script> |