和vue3和解的Day20--插槽1

31 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 20 天,点击查看活动详情

说点题外话

这一篇会先说说插槽在选项式中的使用

说正文

image.png

一、基本介绍

Vue.js是一种流行的JavaScript框架,它允许您构建交互式用户界面。Vue.js 2.x版本中的插槽是一个非常有用的功能,它允许您在组件的模板中定义可重用的内容块。这些块可以由父组件动态地填充,从而提供了更灵活的模板组合方式。

在Vue.js 2.x中,插槽有两种类型:命名插槽和默认插槽。

1. 默认插槽

默认插槽是最简单的插槽类型。它允许您在组件的模板中定义一个占位符,该占位符将由父组件动态地填充。在组件模板中,您可以使用特殊的语法来定义默认插槽

<slot></slot>

当组件被渲染时,这个占位符将被替换为父组件提供的内容。 这个代码实际上就相当于一个占位符,将我们需要在这个位置插入的东西提前占个位置

比如我们有一个组件Home, 但是组件内容是由传入的值决定的。也就是说我们需要在Home组件中使用<slot></slot>这个代码进行占位,将App.vue组件需要传入的值插入在<slot></slot>这里(这是vue帮我们做的事情)

  • App.vue
<template>
  <div>
    <home>
      <h2>我是App组件传入的值</h2>
    </home>
  </div>
</template>

<script>
import Home from './Home.vue';
  export default {
    components: { Home }
  }
</script>
  • Home.vue
<template>
  <div>
    <slot></slot>
  </div>
</template>

<script>
  export default {
    
  }
</script>

image.png

看到这里有人会问,我们可不可以不传值的时候有一个默认值呢?当然可以。我们只需要在<slot></slot>中写入我们的默认值即可。

  • Home.vue
    <slot>
      <i>我是默认插槽的内容</i>
    </slot>

image.png

还有一个问题,如果我们在App组件内多次使用Home组件呢,是重复展示还是会替代上一个内容的

  • App.vue
    <home>
      <h2>我是App组件传入的值</h2>
      <h2>我是App组件传入的值</h2>
      <h2>我是App组件传入的值</h2>
    </home>

image.png

从打印的结果来看,当我们在组件中多次调用一个组件并传入值之后,插槽会将所有信息都展示出来

结束

关于对插槽的基本使用就先说到这里,下一篇说选项式的具名插槽