vue 组件间的通信演示

emit props

子组件

<template>
  <div style="background-color:blue;width:70%;height:100px">
   {{name}}————————{{b_mess.height}}—————{{b_mess.hair}}
   <br>
{{fc}}
   <br>
  </div>
</template>

<script>
export default {
data(){
  return{
    name:"我是B组件",
    b_mess:{height:185,hair:'short'},
  }
 
},
props:{
  fc:Object
},
created(){
       this.$emit("re_cf",this.b_mess)
},
 methods:{

  }
}
</script>

<style>

</style>

父组件

<template>
  <div style="background-color:pink;width:70%;height:200px">
   {{name}}————————{{a_mess.height}}—————{{a_mess.hair}}
   <button @click="cf">发送数据</button>
   {{reb_message}}
   <br/>
   <br/>
   <br/>
    <B @re_cf="re_cf" :fc="a_mess"></B>
  </div>
</template>

<script>
import B from"./B.vue"
export default {
data(){
  return{
     name:"我是A组件",
    a_mess:{height:167,hair:'long'},
    reb_message:{}
  }
},
components:{
    B
},
methods:{
 re_cf(e){
    this.reb_message=e
 }
}
}
</script>

<style>

</style>

在这里插入图片描述
在这里插入图片描述

$ref $children $parent

vue3把 $children取消掉了不然在父组件log输出 $children就是一个数组,里面是他的子组件
$parents

<template>
  <div style="background-color:blue;width:70%;height:100px">
   {{name}}————————{{b_mess.height}}—————{{b_mess.hair}}
   <br>
   {{rea_mess}}
   <br>
  </div>
</template>

<script>
export default {
data(){
  return{
    name:"我是B组件",
    b_mess:{height:185,hair:'short'},
    rea_mess:{}
  }
 
},
props:{
},
created(){
    this.rea_mess=this.$parent.a_mess
    console.log(this.$parent.a_mess);
},
 methods:{

  }
}
</script>

<style>

</style>

在这里插入图片描述
$ref

<template>
  <div style="background-color:pink;width:70%;height:200px">
   {{name}}——————{{a_mess.height}}—————{{a_mess.hair}}
   <br/>
   <br/>
   <br/>
    <B ref="B"></B>
   <button @click="cf">发送数据</button>
  </div>
</template>

<script>
import B from"./B.vue"
export default {
data(){
  return{
     name:"我是A组件",
    a_mess:{height:167,hair:'long'},
  }
},

components:{
    B
},
created(){
  
},
methods:{
  cf(){
    console.log(this.$refs.B.b_mess);
    console.log(this.$children);
  }
}
}
</script>

<style>

</style>

在这里插入图片描述

EventBus $emit $on $off 事件总线

因为Vue3不再提供$on与emit函数,
首先需要下载mitt
vue2的事件总线
main.js

在这里插入图片描述
$emit $on $off
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
vue3中想要使用事件总线需要下载一个插件 mitt

npm install --save mitt或者yarn add mitt -S

app.config.globalProperties.$bus = new mitt()

$emit $on $off
在这里插入图片描述
emit是mitt上面的事件所以不用加 $
在这里插入图片描述
在这里插入图片描述

$attrs $listeners

vue3取消了$listeners
在这里插入图片描述
在这里插入图片描述

详情见 https://v3.vuejs.org/guide/migration/listeners-removed.html

provide inject

在这里插入图片描述

在这里插入图片描述
这样就可以获取父组件的this eltext就是父组件的this
在这里插入图片描述

vuex

见vue官网https://vuex.vuejs.org/zh/guide/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

万事胜意sy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值