Vue之非父子组件的通信

淩亂°似流年 2022-04-17 23:59 339阅读 0赞

新建一个VueEvent.js,创建一个Vue实例充当中间传输媒介

  1. //1.引入Vue
  2. import Vue from 'vue'
  3. //2.实例化一个Vue对象
  4. var VueEvent = new Vue()
  5. //3.实例化的Vue对象暴露出去
  6. export default VueEvent

在通信组件内分别引入VueEvent.js,这里是Home和About两个组件之间通信
Home.vue通过$on接受About.vue传过来的数据:

  1. <template>
  2. <div class="home">
  3. 这是Home组件
  4. </div>
  5. </template>
  6. <script>
  7. import VueEvent from "../VueEvent.js"
  8. export default {
  9. data(){
  10. return{
  11. title:"这是home组件"
  12. }
  13. },
  14. mounted(){
  15. VueEvent.$on("tohome",function(data){
  16. this.title = data;
  17. console.log(this.title)
  18. })
  19. }
  20. }
  21. </script>

About.vue通过$emit向Home.vue发送数据:

  1. <template>
  2. <div class="about">
  3. 这是about组件
  4. <button class="button" @click="emitToHome">About</button>
  5. </div>
  6. </template>
  7. <script>
  8. import VueEvent from "../VueEvent.js"
  9. export default {
  10. data(){
  11. return{
  12. title:"这是about组件"
  13. }
  14. },
  15. methods:{
  16. emitToHome(){
  17. VueEvent.$emit("tohome",this.title)
  18. }
  19. }
  20. }
  21. </script>

主组件分别引入Home.vue和About.vue:

  1. <template>
  2. <div id="root">
  3. <v-home></v-home>
  4. <br>
  5. <br>
  6. <br>
  7. <br>
  8. <br>
  9. <v-about></v-about>
  10. </div>
  11. </template>
  12. <script>
  13. // 1.引入组件
  14. import Home from "./views/Home.vue"
  15. import About from "./views/About.vue"
  16. export default {
  17. //2.注册组件
  18. components:{
  19. 'v-home' : Home,
  20. 'v-about' : About
  21. },
  22. data(){
  23. return{
  24. }
  25. },
  26. methods:{
  27. }
  28. }
  29. </script>

发表评论

表情:
评论列表 (有 0 条评论,339人围观)

还没有评论,来说两句吧...

相关阅读