在Vue 3中,组件开发是构建复杂用户界面的核心。通过Props、Events和Slots的高级应用,我们可以实现更加灵活和强大的组件交互与功能扩展。本文将深入探讨这三者的高级用法,并结合实际案例进行解析。
Props是父组件向子组件传递数据的主要方式。在Vue 3中,定义Props可以使用defineComponent
中的props
选项,或者直接通过接口声明。
import { defineComponent } from 'vue';
export default defineComponent({
props: {
title: {
type: String,
required: true
},
count: {
type: Number,
default: 0
}
}
});
v-model
的功能。export default defineComponent({
props: ['modelValue'],
emits: ['update:modelValue'],
setup(props, { emit }) {
const updateValue = (value) => {
emit('update:modelValue', value);
};
return { updateValue };
}
});
通过emit
方法,子组件可以触发事件并传递数据给父组件。
setup(_, { emit }) {
const triggerEvent = () => {
emit('custom-event', 'Hello from child');
};
return { triggerEvent };
}
.once
、.sync
等,用于控制事件的行为。Slots允许父组件向子组件插入HTML内容。
<template>
<div>
<slot name="header"></slot>
<slot></slot>
<slot name="footer"></slot>
</div>
</template>
graph TD; A[Parent Component] --> B[Child Component]; B --> C[Props]; B --> D[Events]; B --> E[Slots];