vue中更新两个不相关组件的方法

第一步:建立EventBus文件

在src下建立utils文件夹,utils文件夹下创立EventBus.js

 import Vue from 'vue';
 /**
  * 事件总线
  * @usage:
  * EventBus.$emit('event',payload);
  * EventBus.$on('on',(payload)=>{});
  */
 const EventBus = new Vue();
 export default EventBus

第二步:A文件(两个页面都要引用EventBus文件):

<template>
    <div>
        <div class="button" @click="toBpage">点击向B页面传递参数</div>
    </div>
</template>
<script>
    import Bus from "@/utils/EventBus";
    export default {
      data() {
        return {
          id:'12345' //a向b传递的参数
        }
      },
      methods:{
          toBpage(){
            // getId 是自己命名的b页面也通过同一个名字接受参数,this.id 是参数
             Bus.$emit("getId", this.id);
        }
      }
     }
</script>

第三步:B文件(两个页面都要引用EventBus文件):

<script>
    import EventBus from "@/utils/EventBus";
    export default {
      data() {
        return {
          aId:'' 
        }
      },
      mounted(){
      // 获取a传过来的id
          EventBus.$on("getId", (id) => {
          //a传来的参数
          console.log(id,'----id')
          this.aId = id  //可以赋值
          this.getList(id) // 可以做其他操作
        });
      }
      methods:{
          getList(id){
            // 获取数据
        }
      }
     }
</script>

vue利用key重新渲染组件

<v-card :key="reload">
    {{this.message}}
    <v-btn @click='Rerender'>change</v-btn>
</v-card>

 

export default {
  data() {
    return {
      reload: 0,
      message: '旧消息'
    };
  },
  methods: {
    Rerender() {
      this.message = '新消息'
      this.reload += 1;  
    }
  }
}

 

posted @ 2022-06-13 17:50  南瓜壳  阅读(115)  评论(0编辑  收藏  举报