位置: IT常识 - 正文

vue3 中使用 props, emits 并指定其类型与默认值(vuejs props)

编辑:rootadmin
vue3 中使用 props, emits 并指定其类型与默认值 前言

推荐整理分享vue3 中使用 props, emits 并指定其类型与默认值(vuejs props),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue3中使用props,vue3 中使用draggable - web前端,vue3 中使用rsa,vue3中使用props,vue的props用法,vue3 中使用rsa,vue3中使用props,vue3 中使用draggable - web前端,内容如对您有帮助,希望把文章链接给更多的朋友!

本文主要描述 vue3 中 defineProps 与 defineEmits 分别在 JS 环境和 TS 环境中的使用方法。

defineProps 的使用

defineProps在使用的时候无需引入,默认是全局方法。

在 js 开发的 vue3 项目中使用const props = defineProps({ attr1: { type: String, // S 必须大写 default: "", }, attr2: Boolean, attr3: { type: Number, required: true, },});

js 环境中使用与 vue2 的使用方法类似,只是选项式 API 换成了组合式 API。定义 props 类型与默认值都与 vue2 类型,vue3 中使用的是definePropsAPI,在此不多介绍。

在 ts 开发的 vue3 项目中使用interface DeatilInf { aaa: string; bbb: number;}const props = withDefaults( // 参数一:定义props类型:? 代表非必传字段, :号后面紧跟的是数据类型或自定义接口, | 或多种类型 defineProps<{ name: string; age?: number; detail?: DeatilInf | any; }>(), // 参数二:指定非必传字段的默认值 { age: 18, detail: {}, });vue3 中使用 props, emits 并指定其类型与默认值(vuejs props)

使用 typeScript 开发 vue3 项目定义 props 主要使用的 API 有两个: defineProps 定义接收的 props 、withDefaults 定义接收的类型。

当然,你也可以使用上述 js 环境使用的方法定义 props,但这样做就失去了使用 TS 的意义了。

defineEmits 的使用

与 vue2 不同:vue3 在触发事件之前需要定义事件。同样在 vue3 中 defineEmits 也是全局 API

js 中使用const emits = defineEmits(["change", "input"]);emits("chage", "data");emits("input", { data: 123 });TS 中使用enum EventName { CHANGE = "change", INPUT = "input",}const emits = defineEmits<{ (event: EventName.CHANGE, data: string[]): void; (event: EventName.INPUT, data: string): void;}>();emits(EventName.CHANGE, ["data"]);emits(EventName.INPUT, "123");

上面的代码中使用了枚举 enum 避免"魔法字符串"的出现。值得一提,ts 中也可以使用 js 的方式使用,那么就没有发挥出‘T’的作用。

尤其在大型项目里面触发数据的类型可能会出现意想不到的 bug,然后定位 bug 可能得花上好几个小时。也可能会出现触发事件的事件名字符串写错(俗称魔法字符串)导致达不到预期效果。

总结

经过上述代码示例,可能觉得 ts 的写法似乎更加麻烦了,不如 js 来的快。但是,我个人认为使用 ts 开发不仅仅是提示友好,而且能有效避开很多的坑。可谓:"未雨绸缪"胜过“亡羊补牢”的好。

最后,需要这篇文有帮到你。如有谬误,不吝赐教

本文链接地址:https://www.jiuchutong.com/zhishi/294544.html 转载请保留说明!

上一篇:炫酷登录注册 完整功能版【本地存储+JS+HTML+CSS+jQuery】(炫酷登录注册教程)

下一篇:10分钟搞定win11安卓子系统(10分钟搞定3种网红小吃)

  • 小规模纳税人增值税减免账务处理
  • 公司的车不处理违章可以吗
  • 弱电系统多少钱
  • 成本核算方法有先进先出法吗
  • 冲减以前年度主营业务成本对今年有影响吗
  • 小企业会计准则和企业会计准则的区别
  • 怎么看医疗报销单
  • 电子银行承兑汇票已承兑已锁定
  • 企业的定期存款
  • 库存商品的成本核算
  • 外币资本金使用范围
  • 房地产开发临时用电
  • 外包业务账务处理
  • 总分机构如何做账
  • 保险公司赔偿计入营业外收入
  • 销售折扣与折让影响应收账款周转率吗
  • 1697508577
  • 周转材料盘点报告单
  • 财务费用错记成管理费用
  • 如何win10家庭版升级专业版
  • 车船税是什么险种
  • 如何实现php图片打印
  • 结构性存款利息增值税
  • 时序模型算法
  • 提供劳务收入如何核算
  • php分片上传文件
  • 对于个体工商户不需要满足累计经营三个月以上的条件
  • 短期资金都是债务类资金
  • 非上市员工持股
  • 挂靠的项目怎么做账
  • 微信支付开发包
  • nginx webservice
  • 【历史上的今天】3 月 23 日:网景创始人出生;FORMAC 语言的开发者诞生;PRMan 非商业版发布
  • 命令arp-a
  • php制作日历代码
  • 销售建材行业
  • 人力资源管理公务员岗位
  • 增值税普通发票税率
  • 公司的车的停车费谁出
  • php算法有哪些
  • sqlserver2019性能
  • 小规模纳税人应纳税额减征额怎么算
  • 税控盘抄报税逾期怎么办
  • 上一年度主营业务成本多计提了
  • 计算结转本月未交增值税
  • 建筑业异地预缴税款最新规定
  • 电子税务局申报流程
  • 工会经费缴纳会计分录
  • 新注册公司工商如何做印章确认
  • 改制基准日对人员的影响
  • 长期待摊费用如何做账
  • 收款收据可以入账吗
  • 代理出口业务会计分录
  • sql server错误和使用情况报告
  • mysql5.7.17下载
  • redhat rhca
  • win2003自动关机
  • vmware10虚拟机安装
  • linux系统的配置设计过程
  • Win7自带的扫雷怎么都打不开
  • win7系统关机没反应
  • 应用程序发生异常如何解决
  • linux codec
  • 微软win8.1
  • js给表格添加一行
  • node·js
  • Android 让EditText失去焦点避免自动弹出输入法
  • nodejs使用视频教程
  • jquery自定义组件
  • nodejs如何发布服务
  • scrapy—redis
  • android 安卓开发 openssl
  • javascript面向对象编程指南第三版
  • jquery 遍历
  • 汽车购车发票开完票能更改名字吗?
  • 河北省发票查询真伪查询国税
  • 乾升黄酒好吗值得买吗
  • 一巩固三衔接
  • 现在买新车都需要交什么费用
  • 伊朗开心果进口价格
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设