面试题答案
一键面试实现思路
- 在Vue组件中定义三个插槽,分别用于卡片头部、主体和底部内容的插入。
- 对于卡片主体插槽,如果需要传递数据,可使用具名插槽并通过
v-bind
传递数据。
关键代码片段
<template>
<div class="card">
<slot name="header"></slot>
<slot name="body" :data="bodyData"></slot>
<slot name="footer"></slot>
</div>
</template>
<script>
export default {
data() {
return {
bodyData: {
// 假设这里是需要传递给主体插槽的数据
message: '这是传递给主体插槽的数据'
}
};
}
};
</script>
<style scoped>
.card {
border: 1px solid #ccc;
border-radius: 4px;
padding: 16px;
}
</style>
使用该卡片组件时:
<template>
<div>
<Card>
<template v-slot:header>
<h3>卡片头部</h3>
</template>
<template v-slot:body="slotProps">
<p>{{ slotProps.data.message }}</p>
</template>
<template v-slot:footer>
<p>卡片底部</p>
</template>
</Card>
</div>
</template>
<script>
import Card from './Card.vue';
export default {
components: {
Card
}
};
</script>