Vue父子组件传值的三种方法

 更新时间:2022年12月20日 15:47:11   作者:Miracle sir  
这篇文章主要介绍了Vue父子组件传值的三种方法,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

例如:Vue的学习是路阻且艰的,这是一个系列文章,帮助vue的新手可以快速上路,创建的自己的项目,该系列文章主要讲解作者在vue学习之路上,创建项目中最重要的知识,因为笔者水平有限,希望大家多多指正,该系列文章旨在让大家感受vue的便捷,详细学习vue希望大家多多观看官方文档.

一、Vue父子传值的方法

我们在Vue项目进行父子传值主要有以下三种方法:
(1) props / $emit
(2) $parent / children
(3) $ref
在观看方法详解时大家先创建一个父组件parent.vue和一个子组件child.vue并完成父子组件的注册

二、方法详解

1.props / $emit

⼦组件中通过定义props接收⽗组件中通过v-bind绑定的数据

父传子

首先在父组件中定义一个示例data

import child from './child.vue' 
    export default {
        name:'parent',
        components:{
            child
        },
        data(){
            return{
                parentdata:"This is the first word from parent"
            }
        }
    }

在父组件中使用子组件时用v-bind定义一个属性并将父组件的parentdata传入

<child :parentdata="parentdata"></child>

在子组件中使用props接收传入的属性,并可以直接使用

<template>
    <div>
        {{parentdata}}
    </div>
</template>

<script>
    export default {
        name:"child",
        props:{
            parentdata:{
                type:String,
                default:""
            }
        }
    }
</script>

观看结果:

父组件传入子组件的值就被显示出来了

子传父

首先在子组件中定义一个事件,并且使用emit发送给父组件,在示例中子组件使用的click事件触发发送自定义事件(sendmsg)

<template>
    <div>
        <button @click="childmsg">点我试试</button>
    </div>
</template>

<script>
    export default {
        name:"child",
        data(){
            return{
                msg:"This is the first word from child"
            }
        },
        methods:{
            childmsg(){
                this.$emit('sendmsg',this.msg)
            }
        }
    }
</script>

emit使用方法
this.$emit(‘自定义事件名’,所需要传的值)

在父组件中需要定义方法(getmsg)接受自定义事件(sendmsg):

<template>
    <div>
        <child :parentdata="parentdata" @sendmsg="getmsg"></child>
    </div>
</template>

<script>
    import child from './child.vue' 
    export default {
        name:'parent',
        components:{
            child
        },
        methods:{
            getmsg(val){
                console.log(val)
            }
        }
    }
</script>

在定义方法时直接在函数中设置形参接受子组件传入的值(getmsg(val))
在控制台就可以看见打印结果This is the first word from child

2.$parent / children

在使用这个方法时,大家可以先在父组件中打印出来$children,帮助大家理解
代码如下

mounted(){
            console.log(this.$children)
        }

可以看到,子组件被打印出来了

只要找到组件对象对应的属性,就可使用

mounted(){
            alert(this.$children[0].msg)
        }

可以看到结果

注意,这种方法不仅可以调用数据,也可以使用子组件的方法!(但不可以直接调用,这个接下来的文章再说)

如果是子组件使用父组件的数据,可以同样的流程

3.$ref

ref可以让父组件更加便利地取到想要的子组件,其中原理和第二种方法相同,都是取到组件对象

在父组件中定义ref

<template>
    <div>
        <child ref="childselected"></child>
    </div>
</template>

在父组件中取值:

mounted(){
            alert(this.$refs.childselected.msg)
        }

可以看到相同的结果:

总结

***本篇主要讲解了Vue项目中父子组件传值的三种方法:
props/$emit
子组件通过v-bind接收父组件的值
父组件通过接收emit发送的事件接收子组件的值
$parent/children
直接获取组件对象来取值
$ref
定义属性名获取组件对象值

到此这篇关于Vue父子组件传值的文章就介绍到这了,更多相关Vue父子组件传值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue-cli 引入jQuery,Bootstrap,popper的方法

    vue-cli 引入jQuery,Bootstrap,popper的方法

    这篇文章主要介绍了vue-cli 引入jQuery,Bootstrap,popper的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • element 表格嵌套表单验证指定行的操作方法

    element 表格嵌套表单验证指定行的操作方法

    这篇文章主要介绍了element 表格嵌套表单验证指定行的操作方法,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • Vue递归实现树形菜单方法实例

    Vue递归实现树形菜单方法实例

    学习vue有一段时间了,最近使用vue做了一套后台管理系统,其中使用最多就是递归组件,下面这篇文章主要给大家介绍了关于Vue利用递归实现树形菜单的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-11-11
  • vue后台项目如何使用router.addRoutes动态加入路由的思路

    vue后台项目如何使用router.addRoutes动态加入路由的思路

    这篇文章主要介绍了vue后台项目如何使用router.addRoutes动态加入路由的思路,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • vue中img或元素背景图片无法显示或路径错误的解决

    vue中img或元素背景图片无法显示或路径错误的解决

    这篇文章主要介绍了vue中img或元素背景图片无法显示或路径错误的解决方案,具有很好的参考价值。希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • vue键盘事件keyup、keydown的作用

    vue键盘事件keyup、keydown的作用

    这篇文章主要介绍了vue键盘事件keyup、keydown的作用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • vue实现自定义el-table穿梭框功能

    vue实现自定义el-table穿梭框功能

    这篇文章主要介绍了vue实现自定义el-table穿梭框功能,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • vue 扩展现有组件的操作

    vue 扩展现有组件的操作

    这篇文章主要介绍了vue 扩展现有组件的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Vue 应用中结合vux使用微信 jssdk的方法

    Vue 应用中结合vux使用微信 jssdk的方法

    今天小编就为大家分享一篇Vue 应用中结合vux使用微信 jssdk的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • vue.js实现的幻灯片功能示例

    vue.js实现的幻灯片功能示例

    这篇文章主要介绍了vue.js实现的幻灯片功能,结合实例形式分析了vue.js实现幻灯片的相关样式、配置、功能等操作技巧,需要的朋友可以参考下
    2019-01-01

最新评论