vue3.2 父子组件传参

2023-11-06

父组件father.vue                        子组件child.vue

1.父传子,把子组件引入到父组件里,定义数据,然后在子组件里使用props接收数据

father.vue

<template>
    <div>父组件:{{ money }}</div>
    <Child :money="money"/>
    <button @click="fatherBtn">父组件</button>
</template>

<script lang='ts' setup>
import Child from './child.vue'
import { ref } from 'vue'

//初始化money数据为5
const money = ref(5)

//这个没啥影响,只是我测试父组件改变数据,子组件是否改变
const fatherBtn = () => {
    //把money的数据改为11,父子组件数据都会变
    money.value = 11
}
</script>

然后子组件接收

child.vue

<template>
    <div>子组件接收的值: {{ props.money }}</div>
</template>

<script lang='ts' setup>
import { } from 'vue'

const props = defineProps({
    money: Number
})

</script>

2.子传父,点击按钮,使用defineEmits(vue3)发送给父组件数据,然后父子间的数据就会改变

father.vue代码

<template>
    <div>父组件:{{ money }}</div>
    <Child :money="money" @func="change"/>
    <button @click="fatherBtn">父组件</button>
</template>

<script lang='ts' setup>
import Child from './child.vue'
import { ref } from 'vue'

//初始化money数据为5
const money = ref(5)

//这个没啥影响,只是我测试父组件改变数据,子组件是否改变
const fatherBtn = () => {
    //把money的数据改为11,父子组件数据都会变
    money.value = 11
}

//接收子组件传过来的值val
const change = (val:any) => {
    console.log(val)
    money.value = val
}
</script>

child.vue代码

<template>
    <div>子组件接收的值: {{ props.money }}</div>
    <button @click="childBtn">子组件</button>
</template>

<script lang='ts' setup>
import { } from 'vue'

const props = defineProps({
    money: Number
})

const emits = defineEmits(['func'])

//定义一个button,点击向父组件传递数据
const childBtn = () => {
    emits('func', 99)
}
</script>

3.父组件调用子组件的方法

父组件:

<template>
    <div>父组件:{{ money }}</div>
    <Child :money="money" ref="child"/>
    <button @click="fatherBtn">父组件</button>
</template>

<script lang='ts' setup>
import Child from './child.vue'
import { ref } from 'vue'

const child = ref(null)
//初始化money数据为5
const money = ref(5)

//这个没啥影响,只是我测试父组件改变数据,子组件是否改变
const fatherBtn = () => {
    //把money的数据改为11,父子组件数据都会变
    money.value = 11

    child.value.play()
}
</script>

子组件:

<template>
    <div>子组件接收的值: {{ props.money }}</div>
</template>

<script lang='ts' setup>
import { ref } from 'vue'

const title = ref('')

const props = defineProps({
    money: Number
})


//定义一个方法
const play = () => {
  title.value = "你调用了子组件的方法";
};

//defineExpose暴露对象和方法 
defineExpose({
    play
})

</script>

4.provide,inject

provide在father.vue组件中注入数据,下面的子组件,孙组件,及引入的组件都可以使用inject来获取到主组件传过来的数据

father.vue

<template>
    <div>
        <div>father组件:{{ dataValue }}</div>
        <button @click="fatherClick">fatherBtn</button>
        <Child :dataValue="dataValue" />
    </div>
</template>

<script lang='ts' setup>
import { ref, provide } from 'vue'
import Child from './child.vue'

const dataValue = ref('我是原始数据')
//注入数据,第一个是起的名字,第二个是传入的值
provide('oldValue', dataValue)

//点击按钮改变数据,child和sun组件数据也跟着改变
const fatherClick = () => {
    dataValue.value = '我是改变后的数据'
}

</script>

child.vue

<template>
    <div>
        <div>child组件: {{ childValue }}</div>
        <Sun />
    </div>
</template>

<script lang='ts' setup>
import { inject } from 'vue'
import Sun from './sun.vue'

//通过inject获取数据,并赋值给childValue
const childValue = inject('oldValue')
</script>

sun.vue

<template>
    <div>sun组件:{{ sunValue }}</div>
</template>

<script lang='ts' setup>
import { inject } from 'vue'

//通过inject获取数据,并赋值给sunValue
const sunValue = inject('oldValue')

</script>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue3.2 父子组件传参 的相关文章

随机推荐

  • 【C语言】-- 整型数据的存储

    目录 1 数据类型的分类 2 基本类型 2 1 基本类型大小 2 2 整型家族 2 3 数据的存储形式 2 4 整形数据的存储方式 1 数据类型的分类 在C语言中有如下类型 2 基本类型 2 1 基本类型大小 一个变量的创建是要在内存中开辟
  • node の SQLite

    node操作SQLite 之前在做electron桌面制作番茄钟应用时曾经想过用数据库存储数据 一开始打算mongodb 但是发现不能实现无服务器 那么只能使用SQLite了 介绍 SQLite 是一个软件库 实现了自给自足的 无服务器的
  • android 前端常用布局文件升级总结(一)

    问题一 android support design widget CoordinatorLayout 报红 不显示页面 解决方法 把xml布局文件里面的 android support design widget CoordinatorL
  • SpringBoot + Prometheus + Grafana 打造可视化监控

    SpringBoot Prometheus Grafana 打造可视化监控 文章目录 SpringBoot Prometheus Grafana 打造可视化监控 常见的监控组件搭配 安装Prometheus 安装Grafana 搭建Spri
  • [正能量系列]失业的程序员(一)

    注 本文原型为作者的好友 全文不完全代表作者本人的意图 不小心 我失业了 原因是前几天和我的部门经理拍了桌子 我的组员去内蒙古出差 项目没有中标 年后 长得很像猪刚烈的部门经理发飙了 要辞退我的组员 我纳闷了 我的组员是技术支持 要退也应该
  • Proxmox VE虚拟化从入门到应用实战-服务器管理篇(网络配置2

    Proxmox VE虚拟化从入门到应用实战 服务器管理篇 网络配置2 一 Linux多网口绑定 多网口绑定 也称为网卡组或链路聚合 是一种将多个网卡绑定单个网络设备的技术 利用该技术可以实现某个或多个目标 例如提高网络链容错能力 增加网络通
  • 哈希算法总结

    目录 1 Hash是什么 它的作用 2 Hash算法有什么特点 2 1 Hash在管理数据结构中的应用 2 1 Hash在在密码学中的应用 3 Hash算法是如何实现的 4 Hash有哪些流行的算法 5 那么 何谓Hash算法的 碰撞 5
  • Markdown文件关机没保存,怎么恢复

    1 2 点开找到你想恢复的时间段的文件
  • JS date格式化

    Date prototype Format function fmt author meizz use strict jshint var o M this getMonth 1 月份 d this getDate 日 h this get
  • Qt Creator中,include路径包含过程(或如何找到对应的头文件)

    Qt Creator中 include路径包含过程 或如何找到对应的头文件 利用Qt Creator开发程序时 需要包含利用 include来添加头文件 大家都知道 include lt gt 用于包含标准库头文件 路径在安装软件的incl
  • centos7环境下mysql8的tar包的安装及配置

    内网环境下安装及配置 并将数据保存指向某个文件夹 因为博主这里的数据文件夹是有硬盘挂靠的 centos 7 aliyun CentOS 7 x86 64 DVD 1810 mysql mysql 8 0 17 linux glibc2 12
  • 【题解】闯关游戏

    题目描述 艾伦正在闯关 游戏有N个关卡 按照必须完成的顺序编号为1到N 每个关卡可以用两个参数来描述 prob i 和value i 这些参数的含义如下 每当艾伦尝试闯第i关时 他要么顺利通过 要么 挂掉 他完成该关卡的概率总是prob i
  • Red5应用开发(二)直播串流与录制

    环境 操作系统 win10 1803 Eclipse版本 4 7 3a Oxygen J2EE版本 Red5 Server版本 1 0 8 Release 环境搭建参考前一篇文章 Red5应用开发 一 开发环境搭建 后续不再涉及red5 f
  • 职场加班

    总是听到形形色色的职场加班过劳死的故事 甚至有人写了一篇文章 别让老板杀了你 职场果真那么恐怖吗 其实公司怎么想那是公司的事情 公司有权想着把你干掉 把你榨干 因为这样对于公司最有利 但是 问题在于我们自己怎么想呢 在我看来 在这个社会上混
  • python 泛型函数--singledispatch的使用

    functools singledispatch 将一个函数转变为单一分派的泛型函数 用 singledispatch装饰一个函数 将定义一个泛型函数 注意 我们创建的函数获得分派的依据是第一个参数的类型 from functools im
  • SSM框架整合方案(Spring+SpringMVC+Mybatis)

    一 将application进行纵向切分 每一个配置文件只配置与之相关的Bean 除此之外 项目中通常还有log4j properties SqlMapConfig xml db properties文件 二 各文件配置方案详解 1 日志组
  • IDDPM原理和代码剖析

    前言 Improved Denoising Diffusion Probabilistic Models IDDPM 是上一篇 Denoising Diffusion Probabilistic Models DDPM 的改进工作 之前一些
  • 2022年比若依更香的开源项目

    项目名 cpms 是Concise practical management system 的首字母缩写 意思是 简洁实用的后台管理系统 cpms开源项目目前分为 cpms cloud微服务架构和cpms单体应用架构 cpms cloud是
  • Ant Design:Form表单组件的正确使用

    Form 设置表单初始默认值 initialValues 只在初始化和重置表单时生效 Object 表单字段状态发生改变触发的回调函数 onValuesChange function changedValues allValues Form
  • vue3.2 父子组件传参

    父组件father vue 子组件child vue 1 父传子 把子组件引入到父组件里 定义数据 然后在子组件里使用props接收数据 father vue