vue.js - 如何在组件中只使用一个命名插槽?

标签 vue.js

`我有一个包含不同插槽的组件,例如:

页眉槽、主槽和页脚槽

base-layout.vue

<template>
  <div class="container">
    <header>
      <slot name="header"></slot>
    </header>
    <main>
      <slot></slot>
    </main>
    <footer>
      <slot name="footer"></slot>
    </footer>
  </div>
</template>

我有另一个组件(主要)用于呈现到屏幕。

<template>
  <base-layout>
    <template v-slot:header>
      <h2>Hello world</h2>
    </template>
  </base-layout>
</template>

在 Main 组件中我只需要使用 header 槽,而不是当我尝试这样做时所有其他槽也被拾取

最佳答案

如果提供了相应的插槽,您可以使用条件渲染来渲染它们:

<template>
  <div class="container">
    <header v-if="$slots.header">
      <slot name="header"></slot>
    </header>
    <main v-if="$slots.default">
      <slot></slot>
    </main>
    <footer v-if="$slots.footer">
      <slot name="footer"></slot>
    </footer>
  </div>
</template>

或者只是做:

<template>
  <div class="container">
   
      <slot name="header"></slot>
  
      <slot></slot>
      <slot name="footer"></slot>

  </div>
</template>

父级提供包装元素,如 headermainfooter

<template>
  <base-layout>
    <template v-slot:header>
        <header><h2>Hello world</h2></header>
    </template>
  </base-layout>
</template

关于vue.js - 如何在组件中只使用一个命名插槽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67887771/

相关文章:

javascript - 从标签中选择并用作属性 - vuejs

vue.js - 更新 Node 和开发依赖项后无法启动 Vue UI

javascript - Vue 在编译时使用 Typescript 类型检查 Prop

javascript - Vuejs Hello World 不会渲染

javascript - Vue - 设置一个元素的宽度等于另一个元素的宽度

javascript - 在 Vue.js 中将属性作为组件参数传递

javascript - VueJS 父元素与子元素的通信

node.js - vue中的npm安装错误

javascript - Vue js 和收藏/喜欢按钮

vue-component - 如何在 VueJS 中的组件之间共享数据