VUE3子传父

225 阅读1分钟

VUE3中子传父主要通过emit函数发送自定义事件和内容,父组件监听自定义事件来实现数据通信。


子组件                   父组件

+-----------------+       +-----------------+
|                 |       |                 |
|                 |       |                 |
|                 |       |                 |
|  触发 emit      | ----> | 监听事件(@event) |
|                 |       |                 |
|                 |       |                 |
|                 |       |                 |
+-----------------+       +-----------------+


在这个示意图中:

  • 子组件通过调用emit方法触发了一个自定义事件。
  • 父组件在模板中使用事件监听器(@event)来监听这个自定义事件。
  • 当子组件触发自定义事件时,父组件中相应的事件处理函数会被调用。
  • 通过这个过程,子组件可以向父组件传递数据或通知父组件某个事件的发生。

这是一个简单的视觉化描述emit方法在子组件和父组件之间进行通信的方式。父子组件之间的通信可以使用自定义事件来实现,而emit方法是Vue.js中用于触发这些事件的重要工具。

示例

<!-- 子组件 ChildComponent.vue -->
<template>
  <button @click="sendDataToParent">传递数据给父组件</button>
</template>

<script setup>
import { ref } from 'vue';

const emit = defineEmits(['custom-event']);
const counter = ref(0)
const sendDataToParent = () => {
  counter.value = counter.value + 1
  const data = '这是子组件传递的数据' + counter.value.toString()
      emit('custom-event', data);

}

</script>
<!-- 父组件 ParentComponent.vue -->
<template>
  <div>
    <p>从子组件接收到的数据: {{ receivedData }}</p>
    <ChildComponent @custom-event="handleCustomEvent" />
  </div>
</template>

<script setup>
import ChildComponent from './传递组件/ChildComponent.vue';
import {ref} from 'vue'

const receivedData = ref("")
const handleCustomEvent = (data) => {
  receivedData.value = data

}

</script>

示例:

image.png