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

  • 自己企业生产的物料入库单由谁填写
  • 海运的发票可以抵税吗
  • 个税代扣代缴返还手续费如何入账
  • 员工个人承担的保险分录
  • 企业所得税纳税人包括哪些类型
  • 土地整理项目如何提取地块的坐标
  • 分公司独立核算和非独立核算区别
  • 营改增后建筑企业的账务处理
  • 国有企业取得的土地收储款是否要上缴财政
  • 房产公司收到的增值税
  • 建筑公司运营的流程
  • 应收账款补提坏账是什么意思
  • 帮客户垫付的费用有发票如何做账科目
  • 晚会主持人化妆
  • 单位发生的业务怎么做账
  • 发放年终奖计提需要调减利润吗
  • 没有计提12月底的工资
  • 专票入账暂不抵扣如何申报
  • 外汇汇率在其中扮演什么角色?
  • 应收账款减值准备计提比例
  • 劳务公司差额征税账务处理
  • 工资属于劳务收入吗
  • 出口关税的完税条件
  • 现金比率分析怎么分析
  • 福利费需要扣税吗
  • window10与CentOS双系统安装详细教程
  • 利息收入增值税确认时点
  • 法罗群岛知乎
  • 小米随身wf
  • php单例模式连接数据库
  • 【深度学习】模型过拟合的原因以及解决办法
  • 软件开发服务费开票税目
  • 印花税零申报操作流程
  • dede织梦怎么转成zblog
  • 应交税费明细账登记图
  • 国际货运代理需要什么样的人才
  • 有关预收款的说法
  • 会计调转回去还要继续教育吗
  • 所得税调增调减技巧
  • 哪些地方中国没有收复
  • 关联的公司
  • 贴现凭证如何做账务处理
  • 预付账款主要是什么
  • 卸车费属于什么费用类别
  • 营业外收入是否影响营业利润
  • 股权关系怎么描述
  • 现销和赊销加一起等于销售收入吗
  • 生产型企业电费会计分录
  • 法定节假日报税顺延几天
  • 外贸企业怎么开出口发票
  • mysql冗余字段
  • mysql内存占用一直增高不释放
  • mysql多表内连接查询
  • freebsd怎么样
  • Solaris 10 Openssh安装和配置
  • win8恢复出厂设置方法
  • ias.exe是什么程序
  • windows10更新将重启若干次
  • 远程调试linux
  • linux系统怎么更改语言
  • unity发布exe
  • eval()方法
  • jquery实现(textarea)placeholder自动换行
  • 使用forever管理nodejs应用教程
  • js字符串的操作方法
  • jquery 设置背景色
  • [android] android开发中常用的Eclipse快捷键
  • android drawable 圆角锯齿
  • unity 开发游戏
  • jqury选择器
  • Android网络(4):HttpClient必经之路----使用线程安全的单例模式HttpClient,及HttpClient和Application的融合
  • 用js自动判断浏览记录
  • jquery中if语句
  • 医院体检怎么拿发票
  • 中国税务精神内容英文
  • 怎么看上期留抵税额
  • 税务综合办公系统操作手册
  • 工会活动经费的请示
  • 统一社会信用代码证
  • 四川税控
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设