MST

星途 面试题库

面试题:如何在Vue组件库开发中优雅地使用插槽实现灵活的布局

假设你正在开发一个Vue组件库,其中有一个卡片组件,需要通过插槽实现卡片头部、主体和底部内容的灵活定制,且卡片主体部分可能需要传递一些数据给插槽内容进行处理。请描述你的实现思路,并给出关键代码片段。
42.5万 热度难度
前端开发Vue

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 在Vue组件中定义三个插槽,分别用于卡片头部、主体和底部内容的插入。
  2. 对于卡片主体插槽,如果需要传递数据,可使用具名插槽并通过 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>