Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

vue3组件通信

作者:爱我者我必爱*   发布日期:2026-02-25   浏览:32

// 父组件向子组件传递数据(Props)
// 父组件 ParentComponent.vue
<template>
  <div>
    <ChildComponent :message="parentMessage" />
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      parentMessage: 'Hello from Parent'
    };
  }
};
</script>

// 子组件 ChildComponent.vue
<template>
  <div>
    {{ message }}
  </div>
</template>

<script>
export default {
  props: {
    message: String
  }
};
</script>

// 子组件向父组件传递数据(事件)
// 父组件 ParentComponent.vue
<template>
  <div>
    <ChildComponent @child-event="handleChildEvent" />
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  methods: {
    handleChildEvent(data) {
      console.log('Data from child:', data);
    }
  }
};
</script>

// 子组件 ChildComponent.vue
<template>
  <div>
    <button @click="sendMessageToParent">Send Message</button>
  </div>
</template>

<script>
export default {
  methods: {
    sendMessageToParent() {
      this.$emit('child-event', 'Hello from Child');
    }
  }
};
</script>

// 兄弟组件通信(通过事件总线或Vuex)
// 使用事件总线
// 创建事件总线文件 eventBus.js
import { createApp } from 'vue';
const app = createApp({});

export const eventBus = app.config.globalProperties;

// 组件A (发送者)
<template>
  <div>
    <button @click="sendEvent">Send Event</button>
  </div>
</template>

<script>
import { eventBus } from './eventBus';

export default {
  methods: {
    sendEvent() {
      eventBus.$emit('custom-event', 'Hello from Component A');
    }
  }
};
</script>

// 组件B (接收者)
<template>
  <div>
    {{ receivedMessage }}
  </div>
</template>

<script>
import { eventBus } from './eventBus';

export default {
  data() {
    return {
      receivedMessage: ''
    };
  },
  created() {
    eventBus.$on('custom-event', (message) => {
      this.receivedMessage = message;
    });
  }
};
</script>

上一篇:vue const

下一篇:vue获取路由参数

大家都在看

vue.js devtools用法

three.js vue

vue js for循环

vue.min.js 本地引入

highlight.js vue

vue.config.js 配置

vue.config.js 配置代理

vue.config.js configu

node.js vue

vue3 写法

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站