# defineOptions

# 背景

  • <script setup> 之前,如果需要定义 props,emits 可以轻而易举的添加一个与 setup 平级的属性
  • 但是用了 <script setup> 后,就没法这么干了 setup 属性已经没有了,自然无法添加与其平级的属性

为了解决这一问题,引入了 definePropsdefineEmits 这两个宏,但这只解决了 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>
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Baozi 微信支付

微信支付

Baozi 支付宝

支付宝

Baozi 微信

微信