组件之间的数据共享--兄弟组件之间共享数据

在Vue2中,兄弟组件之间的数据共享方案是EventBus

什么是EventBus方案?

EventBus本质就是链接兄弟组件之间的一个桥梁

具体来说EventBus.js模块会向外共享一个Vue实例对象

发送方组件会将数据通过EventBus的Vue实例触发$.emit方法触发一个自定义事件

此时这个自定义事件是可以被外界(导入EvnetBus的组件)使用$.on()方法接收到的

目录

 Son.vue:

Son_2.vue:

EventBus.js:


 Son.vue:

<template>
  <div id="son">
      <p>我是子组件--Son</p>
      <button @click="sendname">点击按钮将数据发送到Son_2组件</button>
  </div>
</template>

<script>
import bus from '@/components/EventBus.js'
export default{
    data(){
       return{
           username:"小蜗"
       }
    },
    methods:{
        sendname(){
            bus.$emit('share',this.username)
        }
    }
}

</script>

<style lang="less" scoped>
*{
    margin: 15px;
    padding: 0;
}
#son{
    text-align: center;
    width: 100%;
    height: 10rem;
    background-color: aqua;
    p{
        font-weight: bold;
        color: #6d6d6d;
    }
    h2{
        color: #1588bd;
    }
}
</style>

Son_2.vue:

<template>
  <div id="son2">
      <div>我是Son_2组件</div>
      <p>姓名:{{ nameFromSon }}</p>
  </div>
</template>

<script>
import bus from '@/components/EventBus.js'
export default {
    data(){
        return{
            nameFromSon:''
        }
    },
    created(){
        bus.$on('share',str=>{
            this.nameFromSon = str
        })
    }
}
</script>

<style lang="less">
*{
    margin: 15px;
    padding: 0;
}
#son2{
    text-align: center;
    width: 100%;
    height: 10rem;
    background-color: #2da05b;
    color: aliceblue;
}
</style>

EventBus.js:

import Vue from "vue";

//向外共享Vue实例
export default new Vue()
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Try Tomato

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值