当前位置: 首页 > article >正文

VUE3父子组件传参

defineProps和defineEmits的使用场景‌

  • ‌父组件向子组件传递数据‌:子组件可以通过defineProps接收来自父组件的数据,并在子组件的模板中使用这些数据。‌2
  • ‌子组件向父组件发送事件‌:子组件可以通过defineEmits触发事件,并将数据发送回父组件,父组件可以监听这些事件并作出响应。‌

defineExpose

defineExpose 是 Vue 3 的 Composition API 中一个新的实用函数,用于在<script setup>语法下显式暴露组件的公共属性和方法,这在处理子组件时特别有用,允许父组件访问子组件的特定属性或方法。在 Vue 3 中,当我们使用defineExpose

父组件:

<com-dialog ref="drawerCreateModel" :title="createShow.title" :drawerType="createShow.drawerType" :data="createShow.data" @dialogVisible="closeCreat"/>
//引入子组件
import comDialog from './page/comDialog.vue'
//定义ref变量
const drawerCreateModel = ref()
//定义需要传给子组件的变量
const createShow = reactive({
    visible: false,
    data: {},
    title: '',
    drawerType: '',
})

//通过ref调用子组件的cancel()方法
const closeModelCreat = () => {
    drawerCreateModel.value.cancel()
}
//当子组件的visible更改时,该方法被触发
const closeCreat = (newValue) => {
    createShow.visible = newValue
}

子组件:

//接收来自父组件的参数
const props = defineProps({
    data: {
        type: Object || Array,
        default: () => {
            return {}
        }
    },
    title: {
        type: String,
        default: ''
    },
    drawerType: {
        type: String,
        default: ''
    },
})
//定义父组件用@dialogVisible传过来的dialogVisible变量
const $emit = defineEmits(['dialogVisible'])
const cancel = () => {
   //通过$emit更新visible,从而触发父组件的closeCreat()方法
   $emit('dialogVisible', false)
}
//向父组件暴露cancel()方法
defineExpose({
    cancel
})


http://www.kler.cn/news/293472.html

相关文章:

  • Requests库对session的支持
  • PHP 项目流水线部署与错误问题解决
  • U盘数据危机应对:详解文件或目录损坏无法读取的恢复之道
  • SpringMVC启动与请求处理流程解析
  • 将网页保存为PDF---不分页
  • GIT | git提交注释自动添加信息头
  • echarts动态切换数据渲染(vue3 + echarts)
  • 5G移动网络运维实验(训)室解决方案
  • 逻辑回归与线性回归的目标函数和应用场景比较
  • 坐牢第三十六天(QT)
  • iOS——Block与内存管理
  • Kafka 实战演练:创建、配置与测试 Kafka全面教程
  • 《Python爬虫逆向实战》加密方法远程调用(RPC)
  • TRIZ在充电桩安全中的应用探究
  • Java 入门指南:Java 并发编程 —— Fork/Join 框架 实现任务的拆分与合并
  • 探索PDF的奥秘:pdfrw库的神奇之旅
  • 2024,中国服务器操作系统迎云智主升浪
  • 鸿蒙开发5.0【高级图表实现】 解决方案
  • c++的类和对象
  • vue-seamless-scroll(二)点击事件
  • 为什么深度学习用GPU而不是CPU
  • electron 客户端 windows linux(麒麟V10)多系统离线打包 最新版 <二>
  • FPGA开发:Verilog基础语法
  • 如何进行不同数据库的集群操作?--从部署谈起,今天来看MySQL和NoSql数据库Redis的集群
  • FFMPEG -- 音频开发
  • 初识命名空间
  • S7-PLC
  • 安装win7鼠标键盘不能动原因分析及解决办法
  • 【AI学习】聊两句深度学习的目标函数
  • 计算机网络27——Linux1