当前位置:首页 > VUE

实现vue兄弟组件通信

2026-01-22 03:49:00VUE

使用事件总线(Event Bus)

创建一个全局的事件总线实例,通过$emit$on实现组件间通信。

// eventBus.js
import Vue from 'vue';
export const EventBus = new Vue();

在发送组件中触发事件:

import { EventBus } from './eventBus.js';
EventBus.$emit('eventName', data);

在接收组件中监听事件:

import { EventBus } from './eventBus.js';
EventBus.$on('eventName', (data) => {
  console.log(data);
});

通过父组件作为桥梁

父组件通过props接收子组件A的数据,再通过v-on将数据传递给子组件B。
子组件A发送数据:

this.$emit('updateData', data);

父组件模板:

<child-a @updateData="handleData"></child-a>
<child-b :data="sharedData"></child-b>

父组件逻辑:

data() {
  return { sharedData: null };
},
methods: {
  handleData(data) {
    this.sharedData = data;
  }
}

使用Vuex状态管理

适用于复杂场景,通过集中式存储管理组件间的共享状态。
定义Vuex store:

// store.js
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);

export default new Vuex.Store({
  state: { sharedData: null },
  mutations: {
    updateData(state, payload) {
      state.sharedData = payload;
    }
  }
});

组件A提交变更:

this.$store.commit('updateData', data);

组件B获取数据:

computed: {
  sharedData() {
    return this.$store.state.sharedData;
  }
}

使用$refs直接访问

通过父组件的$refs直接调用子组件方法(不推荐,破坏组件封装性)。
父组件模板:

<child-a ref="childA"></child-a>
<child-b ref="childB"></child-b>

父组件逻辑:

实现vue兄弟组件通信

this.$refs.childB.methodName(this.$refs.childA.data);

标签: 组件兄弟
分享给朋友:

相关文章

vue实现tooltips组件

vue实现tooltips组件

Vue实现Tooltips组件的方法 基础实现:使用Vue指令 创建一个自定义指令v-tooltip,通过鼠标事件触发提示框的显示与隐藏。 Vue.directive('tooltip', {…

uniapp组件

uniapp组件

uniapp组件基础概念 uniapp的组件系统基于Vue.js,支持跨平台开发(H5、小程序、App等)。组件分为内置基础组件(如<view>、<button>)和自定义组件…

vue实现tooltips组件

vue实现tooltips组件

实现基础 Tooltip 组件 创建一个名为 Tooltip.vue 的单文件组件,包含模板、样式和逻辑: <template> <div class="tooltip-con…

vue实现盖章组件

vue实现盖章组件

实现Vue盖章组件的步骤 组件结构设计 创建一个Vue组件,包含画布元素和必要的控制按钮。画布用于显示盖章效果,按钮用于触发盖章操作。组件需要接收图片和盖章位置等参数。 <template&g…

vue实现列表组件

vue实现列表组件

Vue 列表组件实现方法 基础列表渲染 使用 v-for 指令渲染数组数据,需配合 :key 提升性能: <template> <ul> <li v-for…

vue 缩放组件实现

vue 缩放组件实现

实现 Vue 缩放组件的核心方法 使用 CSS transform 实现基础缩放 通过动态绑定 transform: scale() 样式实现缩放效果。在 Vue 组件的模板中添加需要缩放的元素,并通…