vue中,兄弟组件之间传值

项目中,需要使用多个子组件,当需要传递值的时候,较为麻烦,怎样实现呢

1、一般可以使用子组件a传递给父组件,再由父组件传递给子组件b。但是一般较为麻烦,

2、使用bus作为中介,来传递ab组件之间的值

首先,创建bus.js文件,一般在src目录下,

第一步:src/bus.js
import Vue from 'vue';
export default new Vue;

其次,在组件a中,(只是截取部分代码,此处仅有触发传递的代码)

第二步:a.vue-发送数据
<el-button  @click="edit(item.id)" >编辑</el-button>

引入

import Bus from "@/bus.js";
methods:{
    edit(id){
      Bus.$emit("businessId", id);  //  I、发送数据
      this.$router.push({ path: `/admin/editbusiness/${id}` });
      console.log(id);
    }
}

路由跳转一种写法,当router-link不够方便的时候,大多数可以使用$router.push

this.$router.push({ path: '/admin/editbusiness',query:{id:1}});
this.$router.push({ name: 'business',params:{id:1}});
第三步:b.vue-接收数据

b.vue(b组件)

// 第一步:引入
import Bus from "@/bus.js";
// 第二步: 创建一个函数,接收拿到的数据
getAData(val) {
     console.log(val);  // III、验证数据
},
// 第三步:mounted中进行触发
    mounted(){
        Bus.$on("businessId", this.getAData);  // II、接收数据
    }

以上就是父子组件之间的传值

Logo

前往低代码交流专区

更多推荐