【Vue3知识】组件间通信的方式

概述

在 Vue 3 中,组件间通信是一个常见且重要的需求。Vue 3 提供了多种方式来实现组件间的通信,根据组件的关系(父子组件、兄弟组件、跨层级组件等)和具体需求,可以选择不同的通信方式。以下是一些常用的组件间通信方法:

1. 父子组件通信

父组件向子组件传递数据(Props)
  • 使用 props:父组件通过 props 向子组件传递数据。

  • 示例

    <!-- ParentComponent.vue -->
    <template>
      <ChildComponent :message="parentMessage" />
    </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: {
          type: String,
          required: true,
        },
      },
    };
    </script>
    
子组件向父组件发送事件(自定义事件)
  • 使用 $emit:子组件通过 $emit 触发事件,父组件监听该事件并处理。

  • 示例

    <!-- ParentComponent.vue -->
    <template>
      <ChildComponent @update="handleUpdate" />
    </template>
    
    <script>
    import ChildComponent from './ChildComponent.vue';
    
    export default {
      components: { ChildComponent },
      methods: {
        handleUpdate(newMessage) {
          console.log('Received from child:', newMessage);
        },
      },
    };
    </script>
    
    <!-- ChildComponent.vue -->
    <template>
      <button @click="sendMessage">Send Message</button>
    </template>
    
    <script>
    export default {
      methods: {
        sendMessage() {
          this.$emit('update', 'Hello from Child');
        },
      },
    };
    </script>
    

2. 兄弟组件通信

兄弟组件之间没有直接的通信机制,通常通过共同的父组件或状态管理工具实现。

通过父组件中转
  • 父组件作为中介:兄弟组件通过父组件传递数据或事件。

  • 示例

    <!-- ParentComponent.vue -->
    <template>
      <SiblingOne @send-to-sibling="handleSiblingOneMessage" />
      <SiblingTwo :message="siblingTwoMessage" />
    </template>
    
    <script>
    import SiblingOne from './SiblingOne.vue';
    import SiblingTwo 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

问道飞鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值