位置: IT常识 - 正文

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

发布时间:2024-01-13
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种网红小吃)

  • 单独计税的年终奖怎么算
  • 外出经营活动税收管理证明在哪里办理
  • 不确认递延所得税的特殊情况
  • 税务鉴定收费标准
  • 利息税怎么算的
  • 为什么盈利要利润亏损要扣除所得税
  • 发票跨季度可以用吗
  • 普票销项负数发票
  • 公允价值模式下,投资性房地产不计提折旧或摊销
  • 私企招残疾人可以辞职吗
  • 现金盘亏无法查明原因计入什么科目
  • 哪些单位和个人可构成全宗
  • 除了缴纳的税金还有什么
  • 公司购买的二手车如何计提折旧
  • 建账录入期初数据需要看哪个表
  • 生产设备购买交付会计分录
  • 工业总产值填报原则
  • 个人借款到期未还诉讼时效
  • 2018企业所得税小微企业优惠政策
  • 蓝字发票是什么票据类型
  • 印花税的滞纳金怎么计算
  • 利息支出应计入
  • 会计成本核算的三种基本方法
  • 外经证作废流程
  • 上年度的费用今年怎么算
  • WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
  • Win11如何关闭屏保上的广告
  • php与mysql基础教程
  • 如何修复win11系统
  • linux中cw
  • 计提本月应缴纳的所得税
  • php 字符串 数组
  • 华为2022年资产负债表数据
  • Zinnowitz pier on Usedom island in the Baltic Sea, Germany (© Frank Günther/Getty Images)
  • 境外汇款预处理是什么意思
  • php实现数据库创建题库
  • 旅客运输进项抵扣税率
  • vue set up
  • pytorch 例子
  • 基于stm32的毕业设计
  • 利息支出是利息费用嘛
  • 存货非正常损失的会计处理
  • 织梦专题页模板
  • access使用查询向导固定常数
  • mysql从一个库导入进另一个库
  • sqlserver存储过程加密
  • MySQL5.6 Replication主从复制(读写分离) 配置完整版
  • 什么是虚开增值发票
  • 纳税申报人的对象是哪些
  • 主营业务利润的会计分录
  • 如果对装修费用有异议怎么办
  • 企业中征码怎么查询
  • 薪金的定义
  • 验资 银行
  • 旅游饮食服务企业的特点包括
  • sql语句汇总数据
  • Windows server 2008下如何安装应用程序
  • 打印机取消打印在哪里
  • win10升级后c盘莫名其妙满了
  • linux中samba服务器的设计方案
  • centos6 rpm
  • 联想e430安装win10
  • windows8怎么新建word文档
  • 如何在windows10中获取帮助
  • bootstrap内容
  • jQuery Mobile 和 Kendo UI 的比较
  • bat批处理命令大全
  • python语言基础与应用答案
  • jquery mobile教程
  • js面向对象的三大特性
  • javascript入门书
  • android获取本地相册中图片
  • 税务局稽查科是干什么的工作
  • 企业年金需要个人财产申报
  • 深圳国家税务局赵雨婷处长
  • 深圳个税官网
  • 农村饮水扶持资金申请报告
  • 北京电子税务局实名认证
  • 辽宁税务局代码是多少
  • 江苏地税网站查询系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号