位置: IT常识 - 正文

vue3 父子组件传参详解(vue3父子组件传递数组通信)

编辑:rootadmin
vue3 父子组件传参详解

推荐整理分享vue3 父子组件传参详解(vue3父子组件传递数组通信),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue3父子组件传参同步更新,vue3父子组件传值的四种方式,vue3父子组件传参同步更新,vue3父子组件传递数组通信,vue3父子组件传参同步更新,vue3父子组件传值实时更新,vue3 父子组件传递函数,vue3 父子组件传递函数,内容如对您有帮助,希望把文章链接给更多的朋友!

前言:我引用了大佬的文章,但我实在找不到网址链接了,我记录在笔记上的。如果大佬看见了,麻烦给我说一下,我注明一下出处

建议先看son.vue 里面写了那三种方式

首先放一个我的demo //不用引入直接用,内置API

father.vue

<template><div class="box"><son-item @fua="fub" :numa="numb" ref="childRef"></son-item></div></template><script setup>import sonItem from '@/components/son.vue';import { ref } from 'vue';let numb = ref(0)const childRef= ref()//注册响应数据!!!!!!!!!!!!!!!!//一定要注意这句,要去注册ref,不然就不能解析出来了,这是个踩过的坑let fub = (e)=>{console.log('这是父组件被动接收的子组件的参数'+e);numb.value++console.log('这是父组件主动获取的子组件的参数:'+childRef.value.selfNum);//偷了懒,没有单独去写一个方法,反正也是父组件里面的方法,将就用一下}</script>

son.vue

<template><div class="box">子组件接收的参数:{{ numa }}<br>子组件自定义的参数:{{ selfNum }}<br>//打印表里面有父组件主动获取子组件自定义的参数<br><button @click="fuc">this is a magic button</button></div></template><script setup>import { ref } from "vue"//1、子组件接收父组件的参数defineProps({numa: {type: Number,default: NaN,}})//2、子组件传给父组件参数(子组件调用父组件的方法并传参进去)const str = '这是子组件数据'const emits = defineEmits(['fua'])//这里暴露父组件自定义的方法const fuc = () => {emits('fua', str)selfNum.value+=2}//3、父组件(主动)获取子组件里面自定义的参数let selfNum = ref(0)//自定义一个变量并用上面方法改变其值defineExpose({selfNum//暴露子组件值,让父组件随时可以抓取})</script>

注意:如果son需要father传来的值做一些操作的话;需要拿一个值来接收defineProps,例如:

const props = defineProps({numa: {type: Number,default: NaN,}})console.log(props.numa);

为了区分变量和函数所以用了xxa,xxb,xxc//变量用得不一样,这样更好区分对应的东西

其实我的demo已经讲得很清楚了,如果实在不懂也可以看下文//我也是小白,麻烦有不足请指出

下面是大佬的文章,但也做了一点小修改

vue3 父子组件传参详解(vue3父子组件传递数组通信)

(1)defineProps:子组件接收父组件中传来的props

父组件代码

<template>    <my-component @click="func" :numb="numb"></my-component></template><script lang="ts" setup>    import {ref} from 'vue';    import myComponent from '@/components/myComponent.vue';    const numb = ref(0);    let func = ()=>{numb.value++;}</script>

子组件代码

<template>    <div>{{numb}}</div></template><script lang="ts" setup>    defineProps({        numb:{            type:Number,            default:NaN        }    })</script>

(2)[1] defineEmits 代替emit,子组件向父组件传递数据(子组件向外暴露数据)

子组件代码

<template>    <div>子组件</div>    <button @click="toEmits">子组件向外暴露数据</button></template><script setup>    import {ref} from 'vue'    const name = ref('我是子组件')    //1、暴露内部数据const    emits = defineEmits(['childFn']);    const toEmits = () => {    //2、触发父组件中暴露的childFn方法并携带数据        emits('childFn',name)    }</script>

父组件代码

<template><div>父组件</div><Child @childFn='childFn' /><p>接收子组件传递的数据{{childData}} </p></template><script setup>import {ref} from 'vue'import Child from './child.vue'const childData = ref(null)const childFn=(e)=>{consloe.log('子组件触发了父组件childFn,并传递了参数e')childData=e.value}</script>

[2] defineEmits:子组件调用父组件中的方法

子组件代码

<template><div>{{ numb }}</div><button @click="onClickButton">数值加1</button></template ><script lang="ts" setup>defineProps({numb:{type:Number,default:NaN}})const emit = defineEmits(['addNumb']);const onClickButton = ()=>{//emit(父组件中的自定义方法,参数一,参数二,...)emit("addNumb");}</script>

父组件代码

<template><my-component @addNumb="func" :numb="numb"></my-component></template><script lang="ts" setup>import {ref} from 'vue';const numb = ref(0);let func = ()=>{numb.value++;}</script>

(3)defineExpose:子组件暴露属性,可以在父组件中拿到

使用<script setup> 的组件,父组件是无法通过ref 或者 $parent 获取到子组件的ref等响应数据,需要通过defineExpose 主动暴露

子组件代码

<script setup>import { ref } from 'vue'const a = 1const b = ref(2)//主动暴露组件属性defineExpose({a,b})</script>

父组件代码

<template><div>父组件</div><Child ref='childRef' /><button @click='getChildData'>通过ref获取子组件的属性 </button></template><script setup>import {ref} from 'vue'import Child from './child.vue'const childRef= ref() //注册响应数据const getChildData =()=>{//子组件接收暴露出来得值console.log(childRef.value.a) //1console.log(childRef.value.b) //2 响应式数据}</script>

以上就是全部内容,我也只是一个小白,才学一天做个总结而已

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

上一篇:Segment Anything Model (SAM)——卷起来了,那个号称分割一切的CV大模型他来了(segment anything model模型 需要的配置)

下一篇:vue中使用唯一标识uuid——uuid.v1()-时间戳、uuid.v4()-随机数(vue指定)

  • 抖音永久封禁补救方法(抖音账号解除封禁)

    抖音永久封禁补救方法(抖音账号解除封禁)

  • 快手在别人手机登录怎么取消(快手在别人手机上登录怎么强制下线)

    快手在别人手机登录怎么取消(快手在别人手机上登录怎么强制下线)

  • 朋友圈两条杠一个点(朋友圈两条杠一个月亮或者一个点)

    朋友圈两条杠一个点(朋友圈两条杠一个月亮或者一个点)

  • 微信收款码异常的原因(微信收款码异常怎么解除)

    微信收款码异常的原因(微信收款码异常怎么解除)

  • 为啥手机发信息失败(为啥手机发信息,等会才显示送达)

    为啥手机发信息失败(为啥手机发信息,等会才显示送达)

  • mate20pro充电动画设置(华为p20充电动画)

    mate20pro充电动画设置(华为p20充电动画)

  • 内存条擦了也开不了机(内存条擦擦就能开机)

    内存条擦了也开不了机(内存条擦擦就能开机)

  • 一个c类网络最多容纳多少台主机(一个C类网络最多可以容纳)

    一个c类网络最多容纳多少台主机(一个C类网络最多可以容纳)

  • 虎牙怎么放大主播头像(虎牙怎么放大主播视频)

    虎牙怎么放大主播头像(虎牙怎么放大主播视频)

  • 微信群多少人可以扫码进群(微信群多少人可以给管理)

    微信群多少人可以扫码进群(微信群多少人可以给管理)

  • 闲鱼不退不换规则(闲鱼不退不换规则怎么说)

    闲鱼不退不换规则(闲鱼不退不换规则怎么说)

  • 转转确认收货后能退么(转转确认收货后还能退款吗)

    转转确认收货后能退么(转转确认收货后还能退款吗)

  • 手机自动删除照片是怎么回事(手机自动删除照片怎么找回)

    手机自动删除照片是怎么回事(手机自动删除照片怎么找回)

  • iphonexsmax美版怎么激活(美版xsmax值得入手吗?)

    iphonexsmax美版怎么激活(美版xsmax值得入手吗?)

  • pscc是什么版本(pscc5是什么版本)

    pscc是什么版本(pscc5是什么版本)

  • 小树pdf为什么卸不掉(小树pdf弹窗怎么彻底删除)

    小树pdf为什么卸不掉(小树pdf弹窗怎么彻底删除)

  • 苹果xsmax屏幕怎么样(xsmax手机屏)

    苹果xsmax屏幕怎么样(xsmax手机屏)

  • 快手怎么找到收藏视频(快手怎么找到收藏的音乐)

    快手怎么找到收藏视频(快手怎么找到收藏的音乐)

  • 京东评价中心内容怎么删除(京东评价中心内容怎么写)

    京东评价中心内容怎么删除(京东评价中心内容怎么写)

  • 双4g有啥用(双4g会不会影响信号)

    双4g有啥用(双4g会不会影响信号)

  • 小天才电话手表怎么删除联系人(小天才电话手表app下载安装)

    小天才电话手表怎么删除联系人(小天才电话手表app下载安装)

  • 抖音可以绑定拼多多吗(抖音绑定拼多多安全吗)

    抖音可以绑定拼多多吗(抖音绑定拼多多安全吗)

  • 苹果x怎么显示蓝牙电量(苹果X怎么显示运营商名称)

    苹果x怎么显示蓝牙电量(苹果X怎么显示运营商名称)

  • ipad怎么和电脑同屏(ipad怎么和电脑传文件)

    ipad怎么和电脑同屏(ipad怎么和电脑传文件)

  • FastAdmin插件对接聚合登录(fastadmin 插件开发)

    FastAdmin插件对接聚合登录(fastadmin 插件开发)

  • 曼哈顿河滨公园中的圣女贞德纪念碑 (© Chase Guttman/Alamy)(曼哈顿公园大道432号)

    曼哈顿河滨公园中的圣女贞德纪念碑 (© Chase Guttman/Alamy)(曼哈顿公园大道432号)

  • 怎么安装离线vue环境(怎么安装离线导航)

    怎么安装离线vue环境(怎么安装离线导航)

  • xfs_info命令  查看XFS类型设备详情(linux查询ifconfig和cd命令的完整文件名)

    xfs_info命令 查看XFS类型设备详情(linux查询ifconfig和cd命令的完整文件名)

  • dpkg-query命令  在dpkg数据库中查询软件包(dpkg-configure-a)

    dpkg-query命令 在dpkg数据库中查询软件包(dpkg-configure-a)

  • 最新2022年Auto Cad2019专用破解版windows11-windows12-32位64位下载(附视频教程)免费下载(学生誓词最新2022年)

    最新2022年Auto Cad2019专用破解版windows11-windows12-32位64位下载(附视频教程)免费下载(学生誓词最新2022年)

  • 待认证进项税额和待抵扣进项税额的区别
  • 企业交的增值税怎么做账
  • 自动售货机进货渠道
  • 上季度忘记申报个税了
  • 季度预交所得税可以弥补上年度亏损吗
  • 香港保险代理人佣金
  • 工会经费返还怎么使用
  • 餐饮通用机打发票可以报销吗
  • 可抵扣农产品进项税额吗
  • 差额事业单位发放科研奖励记账
  • 公司注册的费用记什么科目
  • 下个月的发票可以报销上个月的费用吗
  • 清包工简易征收文件
  • 影响所得税金额的因素有哪些
  • 开公司怎么报账
  • 当月认证的发票可以当月抵扣吗
  • 小规模季报利润表本月金额和本年累计金额
  • 抄报税失败是怎么回事
  • 发票勾选了是否就抵扣了
  • 调整会计分录是什么
  • Linux怎么使用vi
  • 我为什么要满足你的要求
  • php的注释可以使用什么开头
  • php b/s
  • neoDVD.exe - neoDVD是什么进程 有什么用
  • win7旗舰版系统激活工具
  • laravel 5.3中自定义加密服务的方案详解
  • redux reducer使用教程
  • org.springframework.web.server
  • airpods怎么注销主人
  • java前端开发是做什么的
  • spring boot怎么学
  • 管家婆实收资本显示负数什么原因
  • 蔬菜免征增值税优惠
  • 其他应付款用什么冲掉
  • 小规模纳税人货款怎么算
  • 小规模纳税人代收水电费税率
  • 交通费比例
  • 织梦如何采集文章
  • 取得交易性金融资产的交易费用
  • 装饰公司购入材料税额会计分录
  • 职工食堂的会计处理
  • 计提工资的核算流程
  • 搬迁所得
  • 营业收入要包括什么
  • 出口免税项目
  • 补交增值税如何入账
  • 期末留抵税额可以退税吗
  • 私营企业算固定收入吗
  • sqlserver锁机制
  • mysql必知必会和sql基础教程
  • mysql主界面
  • use crt secure
  • wpr是什么软件
  • win7虚拟xp系统怎么安装
  • win8系统切换桌面
  • xp系统几位操作系统
  • win102020h2版本
  • 安装centos7安装位置没有磁盘
  • linux用户添加
  • win7电脑老是自动重启是什么原因
  • 侠客驱动是什么意思
  • win7系统怎么锁定屏幕
  • Unity3D游戏开发毕业论文
  • 什么叫懒加载
  • python中的字符型
  • unity平面透明
  • unity script api
  • html加载条代码
  • python抓取数据代码
  • fragment生命周期图
  • 安卓 旋转屏幕
  • 2024新车购置税政策
  • 别人给公司开的普票,怎么查询
  • 服务业增值税率6% 购进13%手机怎么抵扣
  • 北京国家税务局待遇
  • 贵州房产备案信息查询网
  • 重庆税务局查询缴费记录
  • 税是每个人都要交的吗
  • 沙石开发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设