位置: 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指定)

  • 怎么把抖音视频图片单独保存(怎么把抖音视频上的抖音号去掉)

    怎么把抖音视频图片单独保存(怎么把抖音视频上的抖音号去掉)

  • 红米k30pro是什么处理器呢(红米k30pro是什么时候上市的)

    红米k30pro是什么处理器呢(红米k30pro是什么时候上市的)

  • 微信名字后面有个蓝圈(微信名字后面有个蓝色的小人)

    微信名字后面有个蓝圈(微信名字后面有个蓝色的小人)

  • p40快捷键怎么设置(p40设置快捷键)

    p40快捷键怎么设置(p40设置快捷键)

  • 小度1c二维码怎么找(小度的二维码怎么走)

    小度1c二维码怎么找(小度的二维码怎么走)

  • 网易云怎么把音乐下载到本地(网易云怎么把音乐变成音频文件)

    网易云怎么把音乐下载到本地(网易云怎么把音乐变成音频文件)

  • jsn al00a华为是什么型号(华为jsn-al00是什么型号)

    jsn al00a华为是什么型号(华为jsn-al00是什么型号)

  • 微信刷屏是什么意思(微信 刷屏)

    微信刷屏是什么意思(微信 刷屏)

  • 小米10屏幕分辨率是2k吗(小米10屏幕分辨率是几k)

    小米10屏幕分辨率是2k吗(小米10屏幕分辨率是几k)

  • se是苹果5还是苹果6(se是苹果5还是苹果8)

    se是苹果5还是苹果6(se是苹果5还是苹果8)

  • 华为nova3怎么设置双系统(华为nova3怎么设置屏幕不休眠)

    华为nova3怎么设置双系统(华为nova3怎么设置屏幕不休眠)

  • 为什么腾讯视频微信登录不了(为什么腾讯视频会自动下载视频)

    为什么腾讯视频微信登录不了(为什么腾讯视频会自动下载视频)

  • redmibyxiaomi是什么型号(redmi 是什么意思)

    redmibyxiaomi是什么型号(redmi 是什么意思)

  • 西瓜视频在电视上叫什么(西瓜视频在电视端叫什么)

    西瓜视频在电视上叫什么(西瓜视频在电视端叫什么)

  • 荣耀9x充电的时候有没有灯(荣耀9x充电的时间怎么调)

    荣耀9x充电的时候有没有灯(荣耀9x充电的时间怎么调)

  • 蓝牙充电仓怎么充电(蓝牙充电仓怎么拆开)

    蓝牙充电仓怎么充电(蓝牙充电仓怎么拆开)

  • 打印机常见问题处理(打印机怎么选择)

    打印机常见问题处理(打印机怎么选择)

  • 如何查看别人微信置顶(如何查看别人微信绑定的手机号)

    如何查看别人微信置顶(如何查看别人微信绑定的手机号)

  • 微信小程序电脑能用吗(微信小程序电脑端打开)

    微信小程序电脑能用吗(微信小程序电脑端打开)

  • 苹果怎么用蓝牙传照片给安卓(苹果怎么用蓝牙传文件到电脑)

    苹果怎么用蓝牙传照片给安卓(苹果怎么用蓝牙传文件到电脑)

  • 手机屏幕老是旋转怎么办(手机屏幕老是旋转是怎么回事)

    手机屏幕老是旋转怎么办(手机屏幕老是旋转是怎么回事)

  • 怎么解除微信授权app(怎么解除微信授权)

    怎么解除微信授权app(怎么解除微信授权)

  • ADSL MODEM安装好无线路由器后无法上网怎么办(安装adsl modem必须安装什么协议)

    ADSL MODEM安装好无线路由器后无法上网怎么办(安装adsl modem必须安装什么协议)

  • RuntimeError: (PreconditionNotMet) The third-party dynamic library (cudnn64_7.dll) that Paddle depen

    RuntimeError: (PreconditionNotMet) The third-party dynamic library (cudnn64_7.dll) that Paddle depen

  • python进程池的使用注意(进程 python)

    python进程池的使用注意(进程 python)

  • 计提税费会计分录怎么填
  • 购进固定资产的安装费计入原值吗?
  • 网吧是否征收文物保护费
  • 个体户核定双定户是否可以年度汇算清缴
  • 按季度申报,利润表中所得税费用怎么算出来的
  • 预付加油卡发票可以报销吗
  • 缴纳增值税和附加税
  • 快递费未支付应该寄走了吗
  • 减免税金需要计提吗
  • 出版产品
  • 房屋出租怎么交税?
  • 施工企业的成本会计对象
  • 小规模增值税征收条件
  • 应付职工薪酬要结转吗
  • 办公室租赁合同需要交那些税?
  • 个人所得税返还奖励财务人员做账
  • 一次性离职补偿个税
  • 开具旧税号也能认证成功
  • 促销活动赠品应如何账务处理
  • 融资融券主要是哪些对象
  • 逾期交房违约金怎么算
  • 未到期的商业票据是什么
  • 鼠标玩游戏飘怎么回事
  • 净资产利润比率计算公式
  • php数组函数输出《咏雪》里有多少"片"字
  • zmweb.exe是什么进程
  • 企业员工个人所得税申报流程
  • 撤销账户申请怎么写
  • 销售方运输发票怎么做账
  • 个人股份转让
  • 分公司的股东怎么填
  • 存货按实际成本计价是指每种存货的收发结存
  • 潘塔纳尔湿地的主要成因
  • 利用php判断是否为素数
  • 购买办公用品怎么做明细账
  • laravel实战教程
  • 关于php中一些字符的数据
  • vue watch监听localstorage变化
  • 建行E信通贴现需要发票吗
  • lftp shell
  • 购进原材料款项未付应编制什么凭证
  • 处置长期股权投资产生的投资收益是什么
  • 房地产企业建筑成本
  • 什么是固定资产?其特征有哪些
  • 研发失败的费用允许加计扣除吗
  • pandas常用
  • 零申报社保是否可以报销
  • 采用工作底稿法编制现金流量表是以工作底稿为
  • 公司股东向银行货款,与私人财产有没有关系
  • 个人股权转让需要评估吗
  • 税控系统的维护包括哪些内容
  • 在计算应纳税所得额时
  • 残保金申报基数
  • 电子设备计税基础
  • 个税异地缴纳后果
  • 应该是先付款还是先开发票
  • 费用冲账是什么意思
  • 委托收款的业务场景有哪些
  • 报表主营业务收入计算公式
  • 不能抵扣的会计分录
  • 跨行收报属于什么科目
  • 结账时如何划线进去
  • win7系统如何提升性能
  • 播放器状态
  • Win8系统Smartscreen筛选器界面变灰无法设置的解决方法
  • win7 系统设置
  • xp输入法图标消失
  • win10系统桌面图标大小怎么设置
  • excel最小化后再次选择不弹出来
  • nodejs bull
  • cocos2dx怎么安装
  • javascript不严谨
  • nodejs增删改查
  • .material design
  • unity3d功能介绍
  • node项目部署
  • 浙江税务网上开票流程图
  • 河南省税务局冯伟
  • 甲供材备案需要的资料
  • 税务稽查的后果
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设