Vue3+TSX中使用Slots插槽
在Vue 3中使用TSX时,可以通过<slots>
对象来访问和使用插槽。以下是一个简单的例子:
import { defineComponent, PropType } from 'vue';
const MyComponent = defineComponent({
props: {
title: String
},
render() {
return (
<div>
{/* 声明插槽 */}
<header>
<slot name="header" />
</header>
<main>
{/* 默认插槽 */}
{this.$slots.default ? this.$slots.default() : null}
</main>
<footer>
{this.title && <span>{this.title}</span>}
{/* 命名插槽 */}
<slot name="footer" />
</footer>
</div>
);
}
});
export default MyComponent;
使用该组件时:
import MyComponent from './MyComponent.vue';
const App = () => (
<MyComponent title="This is a title">
{/* 默认插槽内容 */}
<p>This is some default slot content.</p>
{/* 头部插槽内容 */}
<template v-slot:header>
<h1>This is a header slot</h1>
</template>
{/* 脚部插槽内容 */}
<template v-slot:footer>
<p>This is a footer slot</p>
</template>
</MyComponent>
);
在这个例子中,MyComponent
组件定义了三个插槽:一个默认插槽和两个命名插槽header
和footer
。在使用该组件时,通过v-slot:
指令指定插槽内容。
评论已关闭