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

  • 华为mate30和华为nova6处理器是不是一样的(华为mate30和华为p30pro哪个好)

    华为mate30和华为nova6处理器是不是一样的(华为mate30和华为p30pro哪个好)

  • 苹果手机qq自动回复怎么设置(苹果手机qq自动离线)

    苹果手机qq自动回复怎么设置(苹果手机qq自动离线)

  • 7nm工艺是什么意思(7nm工艺指的是什么)

    7nm工艺是什么意思(7nm工艺指的是什么)

  • 微信如何调回日间模式(微信如何调回日历提醒)

    微信如何调回日间模式(微信如何调回日历提醒)

  • 手机qq分享屏幕为什么看不到(手机qq分享屏幕怎么全屏观看)

    手机qq分享屏幕为什么看不到(手机qq分享屏幕怎么全屏观看)

  • 华为mate30pro截屏有几种(华为mate30pro截屏在哪里设置)

    华为mate30pro截屏有几种(华为mate30pro截屏在哪里设置)

  • dicm是什么文件夹(dicom是什么文件夹)

    dicm是什么文件夹(dicom是什么文件夹)

  • 申诉不成功如何找回QQ密码(申诉不成功如何找回微信密码)

    申诉不成功如何找回QQ密码(申诉不成功如何找回微信密码)

  • 爱奇艺pc端是什么意思啊(爱奇艺PC端是什么)

    爱奇艺pc端是什么意思啊(爱奇艺PC端是什么)

  • 800万像素是多少mp(800万像素是多少分辨率)

    800万像素是多少mp(800万像素是多少分辨率)

  • vivox20上市时间是哪一年(下一页p20)

    vivox20上市时间是哪一年(下一页p20)

  • 恩科耳机是国产品牌吗(恩科耳机百度百科)

    恩科耳机是国产品牌吗(恩科耳机百度百科)

  • hdtc 什么意思(hdc是什么意思)

    hdtc 什么意思(hdc是什么意思)

  • 华为信任在哪里设置(华为信任app)

    华为信任在哪里设置(华为信任app)

  • 蓝光水平仪与绿光区别(蓝光水平仪与绿光在室外谁更清晰)

    蓝光水平仪与绿光区别(蓝光水平仪与绿光在室外谁更清晰)

  • 苹果为什么下载不了小红书(苹果为什么下载的软件不在桌面上显示)

    苹果为什么下载不了小红书(苹果为什么下载的软件不在桌面上显示)

  • 什么是仿生芯片(什么是仿生芯片技术)

    什么是仿生芯片(什么是仿生芯片技术)

  • 微云上传视频免费吗(微云的视频)

    微云上传视频免费吗(微云的视频)

  • kindle如何退出阅读(kindle如何退出阅读状态)

    kindle如何退出阅读(kindle如何退出阅读状态)

  • 电脑屏幕字体变大了怎么变回来(电脑屏幕字体变宽了怎么调回来)

    电脑屏幕字体变大了怎么变回来(电脑屏幕字体变宽了怎么调回来)

  • 手机央视影音下载的视频在哪里(手机央视影音下载文件如何导出)

    手机央视影音下载的视频在哪里(手机央视影音下载文件如何导出)

  • 石楠花丛中的一只欧亚红松鼠,英格兰 (© Christopher Drabble/Alamy)(石楠花 开花)

    石楠花丛中的一只欧亚红松鼠,英格兰 (© Christopher Drabble/Alamy)(石楠花 开花)

  • Linux下的web服务器搭建(linux中web服务器的安装,配置与测试)

    Linux下的web服务器搭建(linux中web服务器的安装,配置与测试)

  • 小规模纳税人已过开票截止日期禁止开票怎么办
  • 捐赠支出需要什么手续
  • 小微企业增值税减免政策
  • 印花税按照开票金额缴纳可以吗
  • 个人商业保险抵交个人所得税
  • 车辆保险车船税怎么做会计分录
  • 一般纳税人抵扣进项税分录
  • 费用的增加会减值吗
  • 设计、制造
  • 不同组织的区别主要体现在哪些方面
  • 银行卡酒店消费有记录吗
  • 员工向公司借的备用金到年底未还清
  • 捐助建学校
  • 劳务派遣差额征税税率是多少
  • 印花税应税凭证填是还是否
  • 一般纳税人出租不动产增值税税率
  • 福利费专票进项抵扣转出怎么做账
  • 企业偷税行为
  • 母子公司之间的借款利息支出增值税能否抵扣
  • 华为哪些手机有hicar
  • win10如何自定义鼠标指针
  • windows 10预览版
  • 应付债券借贷
  • PHP:curl_copy_handle()的用法_cURL函数
  • 辅导期纳税人注意事项
  • 银行本票出票金额大于账户余额
  • 开具增值税专用发票和普通发票的区别
  • 位于Praprotno村之上的圣托马斯教堂 (© Guy Edwardes/Minden Pictures)
  • vue引入svg图片
  • php 微信公众号自定义菜单
  • 汇率一般是以几位数来显示
  • 卖出回购证券的钱怎么算
  • 金蝶财务软件系统要求
  • react高阶组件
  • 织梦安装步骤
  • 外经证开错作废要带些什么
  • 过路费报销计入什么科目
  • 房屋租赁发票品目填写规范
  • 建筑安装工人住宿费会计分录
  • 地税发票丢失应如何处理
  • 从厂家直接拿货需要什么条件
  • 上年度多提财务费用
  • 办公楼的装修费用如何进行财税处理
  • 住宿补贴需要交个税吗
  • 暂估材料发票长期不到
  • 补贴算报酬吗
  • 商业企业的期间费用包括
  • 怎么把u盘两个盘合并到一起
  • windows字体不显示
  • windowsxp收藏夹在哪
  • 电脑怎么调win7系统
  • win8如何进入启动选择
  • Win10应用程序无法正常启动0xc000007b
  • 如何修改win7电脑用户密码
  • win7开始菜单中的应用程序图标隐藏了
  • 系统自动保存文件在哪里
  • win8怎么设置桌面图标
  • nodejs模拟浏览器环境
  • cocos 源码
  • unity3d基础操作
  • batch批处理
  • bootstrap怎么学
  • javascript类的继承
  • lint 工具
  • 基于python的聊天软件
  • 获取标签的属性值的方式
  • python相关图片
  • unity_jail
  • 怎么做到开放
  • 置顶聊天折叠怎么关闭
  • Python遍历循环
  • python 字典的字典
  • 如何加强税务系统财务管理工作
  • 国家河南税务局
  • 深圳电子税务局怎么查以前申报表
  • 酒吧要交国税还是省税
  • 仓储用地和物流用地划分
  • 湖南社保费申报测算管理系统登录不了
  • 青岛税务局局长是什么级别?
  • 四川省成都市地图高清版大图
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设