vue的组件通信

vue的组件通信 (分为三种:父传子、子传父、兄弟组件通信)

父传子:
//在父页面
<template>
  <div class="">
    <child1 :sendData="brand" ></child1>
  </div>
</template>

<script>
import child1 from '../components/sona'
export default {
  data() {
    return {
      brand:'香奈儿',
    };
  },
  mounted() {},
  methods: {},
  components:{
    child1
  }
};
</script>

<style lang="scss"></style>

在子页面 用 props属性接受 数据

<template>
  <div class="">
    <h1>{{sendData}}</h1>
   
  </div>
</template>

<script>
export default {
  props:['sendData'],
  data() {
    return {

    };
  },
  mounted() {},
  methods: {

  },
};
</script>

<style lang="scss"></style>

子传父

父页面

<template>
  <div class="">
    <child1 @sendParent="doit" ></child1>
  </div>
</template>

<script>
import child1 from '../components/sona'
export default {
  data() {
    return {
    };
  },
  mounted() {},
  methods: {
    doit(e){
      console.log(e);
    }
  },
  components:{
    child1
  }
};
</script>

<style lang="scss"></style>

子页面

<template>
  <div class="">
   
  </div>
</template>

<script>

export default {
  data() {
    return {
      msg:'发送数据到父页面'
    };
  },
  mounted() {},
  methods: {
    sendParent(){
      this.$emit('sendParen',this.msg)
    },
  },
};
</script>

<style lang="scss"></style>

兄弟组件通信

1、创建一个空的vue实例eventBus
2、通过BUS. e m i t ( ′ 事 件 名 ′ ) 传 到 空 的 v u e 实 例 中 3 、 通 过 B U S . emit('事件名')传到空的vue实例中 3、通过BUS. emit()vue3BUS.on(‘事件名’(参数)=>{挂载从子传来的数据}),

首先你需要在main.js里挂在原型
在main.js

import Vue from 'vue' 

Vue.prototype.$eventBus= new Vue()

在子组件a

用 this.$Bus.$emit 接受
<template>
  <div class="">
      <h1>sona</h1>
      <button @click="send">向子组件b传送数据</button>
  </div>
</template>

<script>

export default {
  data() {
    return {
      msg: "sona--msg",
    };
  },
  mounted() {},
  methods: {
    send() {
      this.$Bus.$emit("sendb", this.msg);
    },
  },
};
</script>

<style lang="scss"></style>

在子组件b

用this.$Bus.$on 传值
<template>
  <div class="">
    <h1>sonb</h1>
  </div>
</template>

<script>
export default {
  data() {
    return {};
  },
  mounted() {
    this.$Bus.$on("sendb", (msg) => {
      console.log(msg);
    });
    // 注册事件
  },
  methods: {},
};
</script>

<style lang="scss"></style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值