一文详细聊聊vue3的defineProps、defineEmits和defineExpose
作者:super舒楠 发布时间:2024-04-27 16:02:10
最近在开发中用到了vue3的defineProps、defineEmits和defineExpose,感觉发现新大陆一般,所以利用闲碎时间对这三个方法做个总结。
defineProps
const props = defineProps<{
foo: String,
bar?: Number
}>()
defineProps
是vue3的写法并且是一个仅 <script setup>
中可用的编译宏命令,并不需要显式地导入;在vue3的非语法糖setup和在vue2中的写法是 props
。
defineProps
的大部分用法是进行父子组件传值。
注意:defineProps() 宏中的参数不可以访问
<script setup>
中定义的其他变量,因为在编译时整个表达式都会被移到外部的函数中。
实例:父组件传值给子组件
父组件通过将值传递给子组件,子组件通过defineProps
进行接收,子组件点击后将接收到的值 alert 出来
结果:
defineEmits
const emit = defineEmits<{
(e: 'submit', num: number): void
}>()
defineEmits
和 defineProps
一样也是仅用于 <script setup>
,并且不需要导入;在vue3的非语法糖setup中的写法是 emits
。defineEmits
的不同点在于,组件要触发的事件可以显式地通过 defineEmits() 宏来声明。
注意:如果一个原生事件的名字 (例如 click) 被定义在 emits 选项中,则 * 只会监听组件触发的 click 事件而不会再响应原生的 click 事件。
实例:子组件触发父组件的的事件,并且进行传值。
子组件通过触发父组件的 submit 事件,并且将参数6666传递到父组件。
结果:
defineExpose
const isShow = ref<boo(false)
defineExpose({ // 宏来显示指定组件中属性暴露出去
isShow,
});
在使用 <script setup>
的时候,组件的实例是默认关闭的不能够通过模板引用或者$parent
进行被访问的。
通过 defineExpose 可宏来显式指定在
<script setup>
组件中要暴露出去的属性。
实例:向外暴露属性,被使用。
组件向外暴露了 isShow 属性值,当被点击时可以被访问到。
结果:
总结
来源:https://blog.csdn.net/weixin_44922480/article/details/127337914


猜你喜欢
- 本文为大家分享了python3.5.1安装教程的具体步骤,供大家参考,具体内容如下首先,找到python下载的地址,如下图所示在这里我选择了
- 由于工作的需求,需要用python做一个类似网络爬虫的采集器。虽然Python的urllib模块提供更加方便简洁操作,但是涉及到一些底层的需
- Series 的 sort_index(ascending=True) 方法可以对 index 进行排序操作,ascending 参数用于控
- 用pandas中的DataFrame时选取行或列:import numpy as npimport pandas as pdfrom pan
- 一.用SqlConnection连接SQL Server 1..加入命名空间 using System.Data.Sql
- 今天在群(CSS森林:30247792)里讨论了border的样式写法,发现border的写法还真是灵活,做了一下总结,希望对大家有用:bo
- Python基础语法相关一、Python中的pass语句的作用是什么?pass语句什么也不做,一般作为占位符 或者创建站位程序,pass语句
- list:Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。比如,列出寝室所有室友的名
- 因为自己在设计的时候就对这些东西经常不是很在意,以为是很小的事情,结果往往给自己搞出不少的麻烦。可能大家没有我这么粗心,不过还是想提醒一下跟
- php统计数组元素个数count():对数组中的元素个数进行统计;sizeof():和count()具有同样的用途,这两个函数都可以返回数组
- 需求:在django中,有时候我们需要在一个表单中设置多个按钮实现不同的功能。解决方法:为不同按钮添加不同name属性,然后再后台判断nam
- 步骤一:申请百度地图密钥;JavaScript API v1.4以及以前的版本无序申请秘钥(ak),自v1.5版本开始需要先申请秘钥(ak)
- Spring Security 介绍到现在,我们还没连上数据库呢。真正的项目中,大部分情况下,我们都是自己设计权限数据库,例如微人事(htt
- 先给出一个样例看看 import tensorflow as tfraw = tf.constant([1, 2, 3, 4, 5, 6,
- 偶然从pytorch讨论论坛中看到的一个问题,KL divergence different results from tf,kl dive
- 前言MySQL的binlog日志是MySQL日志中非常重要的一种日志,记录了数据库所有的DML操作。通过binlog日志我们可以进行数据库的
- 思考题假设有一张订单表 order,主要包含了主键订单编码 order_no、订单状态 status、提交时间 create_time 等列
- 安装环境:centos 5.4mysql版本:mysql 5.1.xx 采用rpm直接安装所需软件: xtrabackup 1.2.22 采
- pyinstaller打包问题简单介绍一下pyinstaller常用的参数:可选参数示例说明-Fpyinstaller -F demo.py
- 一、远程过程调用RPC XML-RPC is a Remote Procedure Call method that uses XML pa