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

  • 华为荣耀10为什么接不了电话(华为荣耀10为什么会自动重启)

    华为荣耀10为什么接不了电话(华为荣耀10为什么会自动重启)

  • 小米热点初始密码是多少(小米热点密码忘了)

    小米热点初始密码是多少(小米热点密码忘了)

  • 苹果换过屏幕爱思助手能查出来吗(苹果换过屏幕爱思)

    苹果换过屏幕爱思助手能查出来吗(苹果换过屏幕爱思)

  • ipad爱奇艺打开是竖屏(ipad爱奇艺打开是黑白的怎么回事儿)

    ipad爱奇艺打开是竖屏(ipad爱奇艺打开是黑白的怎么回事儿)

  • 抖音昵称次数上限怎么办啊(抖音昵称次数上限能申请吗)

    抖音昵称次数上限怎么办啊(抖音昵称次数上限能申请吗)

  • 泰坦x相当于什么显卡(泰坦x多少钱)

    泰坦x相当于什么显卡(泰坦x多少钱)

  • 平板下载东西为什么下载不了(平板电脑为什么下载软件)

    平板下载东西为什么下载不了(平板电脑为什么下载软件)

  • 路由器百兆和千兆的区别(路由器百兆和千兆怎么分别)

    路由器百兆和千兆的区别(路由器百兆和千兆怎么分别)

  • nova6耳机孔在哪(华为nova 6的耳机插孔在哪里)

    nova6耳机孔在哪(华为nova 6的耳机插孔在哪里)

  • 钉钉提交作业为什么不显示了(钉钉提交作业为什么显示两次)

    钉钉提交作业为什么不显示了(钉钉提交作业为什么显示两次)

  • 苹果直营店可以帮忙验机吗(苹果直营店可以以旧换新吗?)

    苹果直营店可以帮忙验机吗(苹果直营店可以以旧换新吗?)

  • 卡贴机不插卡可以连wifi吗(卡贴机不插卡可以升级吗)

    卡贴机不插卡可以连wifi吗(卡贴机不插卡可以升级吗)

  • 怎么看自己微信打标没有(怎么看自己微信账号是否异常)

    怎么看自己微信打标没有(怎么看自己微信账号是否异常)

  • 怎么发抖音视频带音乐(怎么发抖音视频才能赚钱)

    怎么发抖音视频带音乐(怎么发抖音视频才能赚钱)

  • 小产权和大产权的区别(小产权和大产权房本一样吗)

    小产权和大产权的区别(小产权和大产权房本一样吗)

  • iphone x指纹在哪里(iphone x指纹识别在哪里)

    iphone x指纹在哪里(iphone x指纹识别在哪里)

  • 怎么关闭QQ音乐自动强制更新(怎么关闭qq音乐vip自动续费)

    怎么关闭QQ音乐自动强制更新(怎么关闭qq音乐vip自动续费)

  • 苹果x掉电厉害是什么原因(苹果x掉电厉害怎么办)

    苹果x掉电厉害是什么原因(苹果x掉电厉害怎么办)

  • 沈阳5g开通时间(沈阳5g什么时候全城覆盖)

    沈阳5g开通时间(沈阳5g什么时候全城覆盖)

  • 太久没充电ns开不了机(太久没充电ns开不开机)

    太久没充电ns开不了机(太久没充电ns开不开机)

  • 飞猪旅行怎么投诉(飞猪旅行怎么联系客服)

    飞猪旅行怎么投诉(飞猪旅行怎么联系客服)

  • 退出id要保留副本吗(退出id要保留副本怎么设置)

    退出id要保留副本吗(退出id要保留副本怎么设置)

  • 电脑开机无限循环重启(电脑开机无限循环重启键盘不亮)

    电脑开机无限循环重启(电脑开机无限循环重启键盘不亮)

  • 【大学生期末大作业】HTML+CSS+JavaScript — 模仿博客网站设计(Web)(大学期末 知乎)

    【大学生期末大作业】HTML+CSS+JavaScript — 模仿博客网站设计(Web)(大学期末 知乎)

  • 免征增值税的会计处理 进项
  • 用友T3资产负债表公式
  • 新政府会计制度衔接预算会计需做好的账目清理工作有
  • 增值税专用发票电子版
  • 天猫店铺收入在哪里看
  • 接受捐赠材料支付的运费 扣除
  • 机器设备预付的费用计入
  • 年报中纳税总额怎么填
  • 公司挂靠有资质的企业公司会计处理
  • 企业所得税弥补亏损明细表怎么填写
  • 分派现金股利会计科目
  • 房地产开发资质管理办法
  • 出售全资子公司合并报表怎么做
  • 企业物流运输
  • 投资款怎样缴印花税?
  • 税务部门罚没收入会计分录
  • 以旧换新要按商品价格吗
  • 税种认定登记流程
  • 施工服务费税率9%
  • 销售营改增之后取得的固定资产
  • 基金公司管理费收入增值税
  • bios设置独立显卡优先启动
  • 税收返还的账务处理
  • 股票溢价净收入计入
  • 工会经费是不是应付职工薪酬
  • PHP:stream_set_chunk_size()的用法_Stream函数
  • 公司股东退股如何审计的
  • 宣泄不能消除不健康的情绪
  • php imagecopy
  • php autoload用法
  • 小规模纳税人增值税申报表怎么填
  • 其他应付款清账
  • css5个定位
  • ai训练流程
  • 微信公众号的推送
  • 企业所得税品目应纳税所得额未申报
  • 纳税人兼营不同税率
  • 网上怎么申请增驾摩托车
  • 为什么很多公司选择股票上市
  • 润滑脂开票属于哪一类
  • 个人社保的缴纳时间
  • 任意盈余公积金怎么计算
  • 旅游大巴应怎么买票
  • 营销策划合作协议
  • 高新技术企业三季度申报所得税研发费加计怎么扣除
  • 劳动报酬所得收入额大于4000
  • 理财产品怎么收费
  • 公司借款给个人400万合法吗
  • 研发费用凭证附件
  • 月初没有发票
  • 公司劳务过账的法律依据
  • 会计存货包括生产成本
  • 新开办企业如何建账
  • 好用的sql工具
  • linux rpm文件怎么安装
  • centos vsftpd配置
  • windows server2012安装完没有桌面
  • ds是什么文件
  • windows远程登录命令
  • win7旗舰版用户
  • windows注册表修改任务栏
  • mac查看地址
  • win7系统摄像头不可用怎么办
  • linux的samba是什么
  • linux快速查看目录大小
  • 史上最全的windows 10 激活码
  • cocos按钮点击事件
  • 使用vue-cli快速搭建vue项目
  • android的布局文件
  • javascript零基础入门
  • python入门小程序编写
  • 个人总结的几个方面
  • javascript object oriented 面向对象编程初步
  • mac版本eclipse 怎么使用
  • 税基式减免,税率式减免,税额式减免三者之间的联系
  • 银行关联方认定标准是什么
  • 中华人民共和国刑法
  • 香港pcc价格
  • 2020年小规模纳税人普票免税政策
  • 云南税收主要经济来源
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设