当前位置:首页 > VUE

vue插槽实现组件切换

2026-02-24 21:21:30VUE

使用插槽实现组件切换的方法

在Vue中,可以通过插槽(Slot)动态切换组件内容。插槽允许父组件向子组件传递模板片段,实现灵活的组件组合。

基本插槽切换

定义子组件时使用<slot>作为占位符:

<!-- ChildComponent.vue -->
<template>
  <div class="container">
    <slot></slot>
  </div>
</template>

父组件传入不同内容实现切换:

<ChildComponent>
  <ComponentA v-if="showComponentA"/>
  <ComponentB v-else/>
</ChildComponent>

具名插槽切换

当需要多个插槽时,使用具名插槽:

vue插槽实现组件切换

<!-- LayoutComponent.vue -->
<template>
  <div>
    <header>
      <slot name="header"></slot>
    </header>
    <main>
      <slot name="content"></slot>
    </main>
  </div>
</template>

父组件指定不同插槽内容:

<LayoutComponent>
  <template v-slot:header>
    <Navigation v-if="useDefaultNav"/>
    <CustomNavigation v-else/>
  </template>

  <template v-slot:content>
    <MainContent :key="contentKey"/>
  </template>
</LayoutComponent>

作用域插槽实现动态切换

子组件通过作用域插槽暴露数据:

vue插槽实现组件切换

<!-- DataComponent.vue -->
<template>
  <div>
    <slot :data="internalData"></slot>
  </div>
</template>

父组件根据数据决定渲染内容:

<DataComponent v-slot="{ data }">
  <ChartComponent v-if="data.type === 'chart'" :data="data"/>
  <TableComponent v-else-if="data.type === 'table'" :items="data.items"/>
  <DefaultComponent v-else/>
</DataComponent>

保持组件状态

使用<keep-alive>缓存动态组件:

<keep-alive>
  <component :is="currentComponent"></component>
</keep-alive>

动态组件与插槽结合

结合<component>和插槽实现高级切换:

<template>
  <component :is="layoutComponent">
    <template v-slot:default>
      <DynamicContent :type="contentType"/>
    </template>
  </component>
</template>

这种方法适用于需要根据条件同时切换布局和内容的场景。

标签: 插槽组件
分享给朋友:

相关文章

react如何实现插槽

react如何实现插槽

React 实现插槽的方法 React 本身没有直接提供类似 Vue 的插槽(slot)概念,但可以通过以下几种方式实现类似功能: 使用 props.children React 组件可以通过 pr…

如何缓存react组件

如何缓存react组件

缓存React组件的方法 React.memo 使用React.memo对函数组件进行浅比较缓存,避免不必要的重新渲染。适用于props不变的场景。 const MemoizedComponen…

react如何删除组件

react如何删除组件

删除 React 组件的几种方法 条件渲染法 通过状态控制组件是否渲染。当状态为 false 时,组件会被移除: const [showComponent, setShowComponent…

vue抽屉组件实现

vue抽屉组件实现

Vue 抽屉组件实现 使用 Element UI 实现 Element UI 提供了现成的抽屉组件 el-drawer,可以快速实现抽屉效果。 安装 Element UI: npm install…

react如何引入组件

react如何引入组件

引入组件的常见方法 直接导入组件文件 通过import语句从指定路径引入组件文件,适用于项目内自定义组件。假设组件文件位于./components/Button.js: import Button…

vue实现头像组件

vue实现头像组件

Vue 头像组件实现 基础实现 创建一个可复用的头像组件,支持图片链接或文字缩写显示: <template> <div class="avatar" :style="ava…