一文详细聊聊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 出来

一文详细聊聊vue3的defineProps、defineEmits和defineExpose

结果:

一文详细聊聊vue3的defineProps、defineEmits和defineExpose

defineEmits

const emit = defineEmits<{
(e: 'submit', num: number): void
}>()

defineEmitsdefineProps 一样也是仅用于 <script setup> ,并且不需要导入;在vue3的非语法糖setup中的写法是 emits
defineEmits 的不同点在于,组件要触发的事件可以显式地通过 defineEmits() 宏来声明。

注意:如果一个原生事件的名字 (例如 click) 被定义在 emits 选项中,则 * 只会监听组件触发的 click 事件而不会再响应原生的 click 事件。

实例:子组件触发父组件的的事件,并且进行传值。

子组件通过触发父组件的 submit 事件,并且将参数6666传递到父组件。

一文详细聊聊vue3的defineProps、defineEmits和defineExpose

结果:

一文详细聊聊vue3的defineProps、defineEmits和defineExpose

defineExpose

const isShow = ref<boo(false)
defineExpose({ // 宏来显示指定组件中属性暴露出去
 isShow,
});

在使用 <script setup> 的时候,组件的实例是默认关闭的不能够通过模板引用或者$parent 进行被访问的。

通过 defineExpose 可宏来显式指定在 <script setup> 组件中要暴露出去的属性。

实例:向外暴露属性,被使用。

组件向外暴露了 isShow 属性值,当被点击时可以被访问到。

一文详细聊聊vue3的defineProps、defineEmits和defineExpose

结果:

一文详细聊聊vue3的defineProps、defineEmits和defineExpose

总结 

来源:https://blog.csdn.net/weixin_44922480/article/details/127337914

标签:defineProps,defineEmits,defineExpose
0
投稿

猜你喜欢

  • Pytorch如何把Tensor转化成图像可视化

    2021-11-03 20:20:22
  • python输出第n个默尼森数的实现示例

    2022-08-12 21:07:25
  • Codeigniter发送邮件的方法

    2023-11-15 05:08:25
  • Ubuntu16.04 安装多个python版本的问题及解决方法

    2021-05-26 05:27:11
  • Python中赋值的含义及说明

    2023-01-05 23:11:38
  • Django 导出 Excel 代码的实例详解

    2021-04-01 05:56:41
  • Typora自动编号的具体操作

    2022-01-21 03:20:18
  • mysql中datetime类型设置默认值方法

    2024-01-17 03:03:09
  • 使用单通道实现半透明效果

    2009-12-12 17:40:00
  • Sql注入工具_动力节点Java学院整理

    2024-01-20 00:02:10
  • python DES加密与解密及hex输出和bs64格式输出的实现代码

    2023-03-07 11:07:50
  • Python List cmp()知识点总结

    2023-08-30 00:49:01
  • 利用Pytorch实现ResNet网络构建及模型训练

    2022-02-24 19:57:59
  • Python编程入门的一些基本知识

    2023-09-07 00:07:24
  • 读Json文件生成pandas数据框详情

    2023-01-11 19:29:01
  • vue简单的二维数组循环嵌套方式

    2024-04-27 16:09:56
  • 如何利用python提取字符串中的数字

    2022-12-09 10:32:13
  • Python 如何在字符串中插入变量

    2023-02-16 11:06:27
  • 教你利用pygame模块制作跳跃小球小游戏

    2022-02-07 11:28:46
  • python中数组和矩阵乘法及使用总结(推荐)

    2021-11-30 04:29:31
  • asp之家 网络编程 m.aspxhome.com