微信扫一扫 分享朋友圈

已有 1405 人浏览分享

开启左侧

vue组件间传值有哪些方法

[复制链接]
1405 0
一丶父子组件传值
    先在父组件中给子组件的自定义属性绑定一个 父组件的变量
<template class="father">
   <child :自定义属性名="父组件的变量"></child>
<template >
    在子组件的props属性中可以取出父组件给的值,props中的变量用法和data中变量用法完全一样,只不过值的来源不同

export default {
        name: "child",
        props: ["自定义属性名"],
    data() {}
}

二丶子父组件传值
    先在父组件中给子组件的 自定义属性 绑定一个父组件的函数
<template class="father">  
        <child  @自定义事件="父的处理函数">
<template >
export default {
        name: "father",
        data() {}
        methods:{
                父的处理函数(参数){
            //参数:得到子组件触发事件($emit)时,传递过来的数据
        }
    }
})
    在子组件中 this.$emit(“父的处理函数”,this.数据) 触发父组件中的函数进行传参

三丶兄弟组件传值
事件总线:
就是创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件
    创建全局空Vue实例:eventBus
import Vue from 'vue';
const eventBus= new Vue()  //创建事件总线
export default eventBus;
    具体页面使用$emit发布事件 - 传递值
import eventBus from '@u/eventBus'
eventBus.$emit('send',‘hello’)
    具体页面使用$on订阅事件 - 接收组件值
import eventBus from '@u/eventBus'
eventBus.$on('send', msg => {
        console.log(msg)  //控制台输出 hello
}
    注意:$on先进行监听,一旦$emit发布事件后所有组件都可以$on监听到事件。所以传递参数的时候一定已经先进行了监听才能得到参数。比如在父组件中$emit事件放在mounted钩子函数中,等待子组件创建并$on开始监听事件后再去触发$emit发布事件。
    $off()移除事件监听
import eventBus from '@u/eventBus'
eventBus.$off('send')  
事件订阅功能$on是$eventBus对象完成的,与组件无关,如果用v-if销毁子组件的时候,会形成闭包,造成内存泄露,所有要在销毁组件的时候进行取消监听事件
具体形成原因点击查看

四丶$parent /$children与ref
    $parent方法是在子组件中可以直接访问该组件的父实例或组件。
    在父组件中定义一个切换显示页面执行中的显示方法。
switchLoadPage(msg) {
    if(!this.loading && msg)
                  this.loadtext=msg;
                  this.loading = !this.loading;
},
​ 在子组件中直接通过$parent去调用该方法
this.$parent.switchLoadPage();
    $children方法是在父组件中可以直接访问子组件的实例,但是不保证子组件的顺序。
    ref 被用来给DOM元素或子组件注册引用信息。引用信息会根据父组件的 $refs 对象进行注册。如果在普通的DOM元素上使用,引用信息就是元素; 如果用在子组件上,引用信息就是组件实例。
    在父组件中自定义一个表格组件,给子组件加上 ref属性
<result ref="result" :config="dgConfig"  ></result>
​ 在父组件中就可以通过this.$refs.result去找到result子组件进行操作,比如把父组件的sdata直接放入子组件中
methods: {
          info(){
                   this.$refs.result.sdata = this.sdata;
    },
}


免责声明:
1,海欣资源网所发布的资源由网友上传和分享,不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
2,海欣资源网的资源来源于网友分享,仅限用于学习交流和测试研究目的,不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
3,海欣资源网所发布的资源由网友上传和分享,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。
4,如果您喜欢,请支持正版,购买正版,得到更好的正版服务,如有侵权,请联系我们删除并予以真诚的道歉,联系方式邮箱 haixinst@qq.com
海欣资源-企业信息化分享平台。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

0

粉丝

56

主题
热度排行
回复排行
最新贴子

Archiver|手机版|海欣资源 ( 湘ICP备2021008090号-1 )|网站地图

GMT+8, 2024-10-6 02:47 , Gzip On, MemCached On.

免责声明:本站所发布的资源和文章均来自网络,仅限用于学习交流和测试研究目的,不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 本站信息来自网络,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 如果您喜欢,请支持正版,购买正版,得到更好的正版服务,如有侵权,请联系我们删除并予以真诚的道歉。