(゜-゜)つロ ganto.me

Vue3.3+ 新特性 defineOptions

defineOptions是一个宏,是在Vue3.3+中新增的新特性

defineOptions配置项

name

在Vue3.3之前,组件的默认组件名为.vue单文件组件[SFC]文件的名字,如果需要修改组件名则需要结合Options API进行配置

<!-- src/components/Com.vue -->
<script setup>

</script>

<script>
export default {
  name: 'ComponentName'
}
</script>

<template>
  <div>Com Component</div>
</template>

在以上的代码中,写了两个script标签,一个标签写Composition API代码,一个标签以Options API的方式配置组件名
虽然可以配置组件名,但是这种处理方式很不好

在Vue3.3+新增的defineOptions宏,可以很好的解决这个问题

<!-- src/components/Com.vue -->
<script setup>
defineOptions({
  name: 'ComponentName'
})
</script>

<template>
  <div>Com Component</div>
</template>

在以上代码中可以看到,defineOptions是全局的宏,无需导入

inheritAttrs

在Vue中如果在组件标签上添加属性,则会被透传到组件的根标签上,在Vue3中,组件的根标签可以存在多个,如果根标签存在多个,那么透传将失效

<!-- src/App.vue -->
<script setup>
import Com from './components/Com.vue'
</script>

<template>
  <Com class="comComponentClassName" />
</template>
<!-- src/components/Com.vue -->
<script setup>
defineOptions({
  name: 'ComponentName',
})
</script>

<template>
  <div>Com Component</div>
</template>

解析后的代码

<div id="app" data-v-app="">
  <div class="comComponentClassName">Com Component</div>
</div>

有时在开发中,并不希望组件存在透传行为,我们可以通过配置进行关闭

<!-- src/components/Com.vue -->
<script setup>
defineOptions({
  name: 'ComponentName',
})
</script>

<script>
export default {
  inheritAttrs: false
}
</script>

<template>
  <div>Com Component</div>
</template>

以上代码,在Vue3.3之前,如需配置组件禁用透传,那么配置方式和配置组件名一样,需要在单独的script写Options API配置项

在Vue3.3+可以通过defineOptions宏进行配置

<!-- src/components/Com.vue -->
<script setup>
defineOptions({
  name: 'ComponentName',
  inheritAttrs: false,
})
</script>

<template>
  <div>Com Component</div>
</template>

defineOptions宏还可以配置其他内容,具体内容请查看官方文档 https://cn.vuejs.org/api/sfc-script-setup.html#defineoptions

posted @   干徒  阅读(13351)  评论(1编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
⬆️ ⬇️
点击右上角即可分享
微信分享提示