【$bus】Vue2 全局事件总线

【$bus】Vue2 全局事件总线

前言

兄弟组件传值(跨组件传值)–不用vuex管理
vue2写法,vue3已经将bus抽成专门的库了

代码

main.js文件:

import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false
Vue.prototype.$bus = new Vue()

new Vue({
  render: (h) => h(App)
}).$mount('#app')

app.vue文件:

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png" />
    <HelloWorld msg="Welcome to Your Vue.js App" />
    <component-a></component-a>
    <component-b></component-b>
  </div>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'
import ComponentA from './components/componentA.vue'
import ComponentB from './components/componentB.vue'

export default {
  name: 'App',
  components: {
    HelloWorld,
    ComponentA,
    ComponentB
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

子组件A:

<template>
  <div>
    <h1>A组件</h1>
    <select v-model="selectVal" @change="handleChange">
      <option>男生</option>
      <option>女生</option>
    </select>
  </div>
</template>

<script>
export default {
  name: 'ComponentA',
  data() {
    return {
      selectVal: ''
    }
  },
  methods: {
    handleChange() {
      this.$bus.$emit('componentBus', this.selectVal)
    }
  }
}
</script>

<style></style>

子组件B:

<template>
  <div>
    <h1>兄弟组件B</h1>
    <div>兄弟组件选择的值是:{{ select }}</div>
  </div>
</template>

<script>
export default {
  name: 'ComponentB',
  data() {
    return {
      msg: '',
      select: ''
    }
  },
  created() {
    this.$bus.$on('componentBus', (value) => {
      this.select = value
    })
  }
}
</script>

<style></style>

运行效果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

适用兄弟组件传值,且非公共调用的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值