vue2和vue3 父子组件传参及区别

2023-11-11

vue3

1.父组件传子组件

在父组件的子组件标签中定义一个属性,在子组件中用defineProps接收父组件传来的值

父组件
<template>
<div>
  <sonOne msg="我是父组件的msg" @get-child-data="getChildData"></sonOne>
<!-- <p>{{num1}}</p>-->
</div>
</template>

<script setup lang="ts">
import {ref,onMounted} from  'vue'
import sonOne from '@/components/sonOne.vue'

// var num1 =ref('')
// // 接收
// const getChildData = (data) => {
//   console.log(data.value);
//   num1.value = data.value
// }
</script>

<style scoped>

</style>

子组件

<template>
<div>
<p>我是父组件传过来的:{{msg}}</p>
<!--  <button @click="sendData">传递数据给父组件</button>-->
</div>
</template>

<script setup lang="ts">
import {ref} from 'vue'
defineProps<{
  msg
}>()

// const num = ref(123)
// const emits = defineEmits()
// emits('getChildData', num)

</script>

<style scoped>

</style>

1.子组件传父组件

在父组件的子组件标签中定义一个自定义事件,用自定义事件来接收子组件传来的参数,在子组件中用defineEmits向父组件传参

父组件
<template>
<div>
  <sonOne msg="我是父组件的msg" @get-child-data="getChildData"></sonOne>
 <p>{{num1}}</p>
</div>
</template>

<script setup lang="ts">
import {ref,onMounted} from  'vue'
import sonOne from '@/components/sonOne.vue'

var num1 =ref('')
// 接收从子组件传来的参数
const getChildData = (data) => {
  console.log(data.value);
  num1.value = data.value
}
</script>

<style scoped>

</style>
子组件
<template>
<div>
<p>我是父组件传过来的:{{msg}}</p>

</div>
</template>

<script setup lang="ts">
import {ref} from 'vue'
defineProps<{
  msg
}>()

const num = ref(123)
// 子传父
const emits = defineEmits()
emits('getChildData', num)

</script>

<style scoped>

</style>

vue2

父组件传子组件

<div id='app'>
        <!-- 父传子需要在父组件中的子组件中定义一个变量 -->
        <son :type="father"></son>
    </div>

    <template id="son">
        <div>
            {{type}}
        </div>
    </template>

    <script>
        // 子组件
        Vue.component('son',{
        template:'#son',
        // 在子组件中需要用props接收父组件的值
        props:{
            type:[String,Number]
        },
    })
    // 父组件
    const vm = new Vue({
        el: '#app',
        data: {
            father:'父组件传给子组件的值'
        },
        methods: {           
        }
    })
    </script>

子组件传父组件

<div id='app'>
        <!-- 子传父需要在父组件中的子组件中定义一个自定义事件 -->
        <son @getson="getson"></son>
        <h2>{{msg}}</h2>
    </div>
    <template id="son">
    </template>
    <script>
        // 子组件
        Vue.component('son',{
            template:'#son',
            data(){
                return {
                    msg:'子传过来的值'
                }
            },
            created(){
                // 在子组件中用this.$emit传递参数   this.$emit(第一个参数 自定义事件的名字,第二个参数  传递的值) 
                this.$emit('getson',this.msg)
            }
        })

        // 父组件
    const vm = new Vue({
        el: '#app',
        data: {
            msg:''
        },
        methods: {
            // 自定义的事件名函数接收子传过来的值
            getson(data){
                this.msg = data
            }
        }
    })
    </script>

vue2和vue3父子组件传参的区别:

父传子:

vue2中父传子,父组件通过自定义属性发送,子组件通过props接收。
vue3中不同的是,父组件中引入子组件后,不需要注册可直接使用,子组件中通过defineProps方法接收

子传父:

vue2中子传父,子组件通过$emit发送,父组件通过自定义事件接收。
vue3中不同的是,父组件中引入子组件后,不需要注册可直接使用,子组件中通过defineEmits方法发送。

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

vue2和vue3 父子组件传参及区别 的相关文章

随机推荐

  • Logstash 入门:介绍 Java 的 Output Plugin

    Logstash 入门 介绍 Java 的 Output Plugin Logstash 是一个开源的数据收集和处理引擎 它可以从各种来源采集数据 并将其转换为可用于存储 分析和可视化的格式 Logstash 通过插件系统提供了灵活的扩展性
  • AD软件解决 Unknown Pin 和Failed to add class member 问题

    出现这个提示是因为现在的PCB里已经含有net的 只需要先删除所有现在板子上的net 然后再导入就不会出现这个提示 现在暂时不用管 点继续 同上继续 如何解决Unknown Pin问题 只需要删除现在PCB板子上所有的net就行了 具体如下
  • android 自定义空白,小米手机自定义空白卡模拟加密卡门禁卡教程

    小米手机自定义空白卡模拟加密卡门禁卡教程 使用MIUI自带门卡模拟功能 并尝试烧录完整数据 不依赖任何第三方软件 不会对系统做什么恶 意 修 改 也不会对其他依赖NFC的服务 小米公交 Mi Pay银行卡等 造成影响 1 准备工作 两台全功
  • POSTGRESQL 判断字段为空的方法

    1 IS NULL 和 IS NOT NULL 操作符 2 运用COALESCE函数进行字段的非空判断 并在第二个参数指定默认值
  • 利用稳压模块设计电源电路(洞洞板手工做板)

    前言 一块12伏的电池 要进行分压以适应多路的供电要求 因此做电源电路很有必要 本文采用洞洞板 稳压模块 手工焊接 1 实物 2 原理图 3 焊接 用焊锡连线 而不是用杜邦线跳线 焊锡线粗 可以保证大电流通过 而杜邦线太细了 容易烧毁 更甚
  • feign.FeignException$Unauthorized: status 401 reading UserOpenFeignService#findUser

    feign FeignException Unauthorized status 401 reading UserOpenFeignService findUser 如果是pig那边的问题 可以关了 文章针对的是单纯feign调用的问题 出
  • matlab自动深复制(deep copy)

    matlab 程序中 多次重复实验 而每次重复中会对数据 X 加一些随机噪声 此处希望每次重复时深复制一次 X 使得本次的噪声不会影响原数据 matlab 似乎能自动决定要不要复制一份 测试如下 Code matlab R2018a 原数据
  • 深入剖析智能仓储管理(WMS)应用价值与应用场景

    中国企业都在思考和部署如何实现一种高度自动化 高度信息化 高度网络化的生产模式 从而实现基于大数据的用户全息深层分析 本文目的在于交流如何建设适合自己企业的智能仓储 文 供应链指南针 孙亚博 2013年德国提出第四次工业革命 工业4 0的兴
  • linux开机自启动脚本以及update-rc.d命令解析

    linux有很多种自启动方式 这里只是简单记录下update rc d的自启动方式 update rc d的介绍 update rc d命令用于安装或移除System V风格的初始化脚本连接 脚本是存放在 etc init d 目录下的 我
  • HashSet详解

    概述 HashSet也是一个使用频率非常高的一个集合容器 最大的特点是存储的元素是没有重复的 而且是无序的 那么对于HashSet是如何判断原始是否重复 底层又是怎么实现的 你了解吗 HashSet介绍 HashSet 基于 HashMap
  • git-常见问题解决方法(全)

    git使用过程中遇到的问题解决方法记录 问题 1 更新代码后显示 unable to unlink old xxx xxx xx invalid argument 问题原因 要提交或更新的文件被系统线程占用 解决方法 把相关服务暂停 重新p
  • PDF文件如何转成markdown格式

    百度上根据pdf转makrdown为关键字进行搜索 结果大多数是反过来的转换 即markdown文本转PDF格式 但是PDF转markdown的解决方案很少 正好我工作上有这个需求 所以自己实现了一个解决方案 下图是一个用PDF XChan
  • 微前端的出现的背景和意义

    目录 微前端是什么 大规模 Web 应用的困局 传统 Web 应用的利与弊 背景和意义总结 微前端是什么 微前端是一种类似于微服务的架构 是一种由独立交付的多个前端应用组成整体的架构风格 将前端应用分解成一些更小 更简单的能够独立开发 测试
  • mysql删除一行_MySql删除表中一行的实操方法

    MySql删除表中一行的实操方法 首先你要确定能够唯一确定你那一行数据的字段或字段组合是哪些 DELETE FROM 表名 WHERE 字段1 and 字段2 and 字段1 为能够唯一确定某一行数据的字段组合 中填写你要 删除的字段具体值
  • Unity-ScrollRect-循环播放图片(确实没有转载是真的)

    都在代码和代码注释里了 发表在这里我还是有私心想要问问题的 是因为自己在使用时发现 Unity会调用两次通过继承来的PictureScrollView的Start函数两次 我并不能想明白是怎么回事 还请有了解的指点一下 先谢谢能给我指点的各
  • 【好文分享】亲试可行!简单快捷!如何在Ubuntu上编译Linux0.11

    2023年9月10日 周日上午 昨天晚上按照博客园的这篇文章试了一下 很快就成功在Ubuntu上编译运行了Linux0 11 https www cnblogs com chaoguo1234 p 16883932 html
  • linux redhat6.5 64位 login登陆无限循环

    场景 公司VC上虚机要迁移 通过拷贝vmfs文件方式迁移 开机后 发现无法登陆 一开始怀疑密码有问题 后来排除 然后网上搜索要修改 etc pam d login里边的参数 64位系统将 lib security pam limits so
  • Eclipse 报错: “Workspace in use or cannot be created, chose a different one.”

    打开eclipse报错 Workspace in use or cannot be created chose a different one 意识是 正在使用或无法创建工作区 选择另一个 解决办法 找到你eclipse得工作区 打开 me
  • C++ typeid运算符:获取类型信息

    typeid 运算符用来获取一个表达式的类型信息 类型信息对于编程语言非常重要 它描述了数据的各种属性 对于基本类型 int float 等C 内置类型 的数据 类型信息所包含的内容比较简单 主要是指数据的类型 对于类类型的数据 也就是对象
  • vue2和vue3 父子组件传参及区别

    vue3 1 父组件传子组件 在父组件的子组件标签中定义一个属性 在子组件中用defineProps接收父组件传来的值 父组件