Vue基础知识:Vue3.3出现的defineOptions,如何使用,解决了什么问题?

1.那么为什么会出现defineOptions?

原因说明:

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

如果不用setup的话,可以添加许多平级的属性。如图所示

但是用了setup语法糖就无法添加同级属性了,只能用编译器宏,defineExpose、defineEmit......

为了解决这一问题,引入了 defineProps 与 defineEmits 这两个宏。但这只解决了 props 与 emits 这两个属性,。如果我们要定义组件的 name 或其他自定义的属性,还是得回到最原始的用法--再添加一个普通的 <script>标签,这样就会存在两个<script>标签。让人无法接受,如图所示:

所以在 Vue 3.3 中新引入了 defineOptions 宏。顾名思义,主要是用来定义 0ptions APl的选项。可以用defineOptions 定义任意的选项, props,emits,expose,slots 除外(因为这些可以使用 defineXXX 来做到)

2.下面进行案例演示:

相关推荐
梨想橙汁5 分钟前
Webpack 快速上手:前端工程化、打包原理、从零搭建基础项目
前端·webpack·前端工程化
zhanghaha13149 分钟前
HTML系列教程:12_HTML 表格 <table> 零基础详解
前端·html
Betterme13 分钟前
Vue3 竞态请求防护组合式hooks:useLatestRequest 设计思路
前端
_zhourui_h_16 分钟前
一个 [ECS] 到底生成了多少代码?EasyECS 最核心的秘密都在这里
前端
梨想橙汁18 分钟前
Git 分支详解:创建切换、合并分支、冲突解决实战
前端·git
雪芽蓝域zzs20 分钟前
Vue3 defineProps` / `defineEmits` 是编译器宏,不需要手动 import 导入
前端·javascript·vue.js
whyweplay24 分钟前
Elpis:从Json Schema 到 页面
前端·javascript
大牧师1 小时前
Nest.js 微服务入门教程
开发语言·javascript·后端·微服务·node.js·nest.js·nest
做萤石二次开发的哈哈1 小时前
海康班班通交互一体机技能接入实战:ISAPI透传+OTAP双协议封装,Web/App/小程序教学管理应用一站生成
前端·物联网·小程序·交互·萤石开放平台·蓝海aiot一站式工作台·aiot开发
计算机魔术师1 小时前
Anthropic一次性锁死十年算力,5170亿美元买什么
前端