vue2 封装插槽组件

安装 element-ui

npm install element-ui --save ---force

main.js 导入

import Vue from 'vue';

import ElementUI from 'element-ui';

import 'element-ui/lib/theme-chalk/index.css';

import App from './App.vue';

Vue.use(ElementUI);

new Vue({ el: '#app', render: h => h(App) });

创建一个插槽组件

  • 具名插槽 (Named Slots) :允许你在组件中定义多个插槽,并为它们命名。在上面的示例中,header 是一个具名插槽。

  • 默认插槽 (Default Slot):如果没有提供具名插槽,插入的内容会放入默认插槽。

    <template>
    <slot name="header"></slot>
    <slot></slot>
    </template> <script> export default { name: 'BaseCard' } </script> <style scoped> .card { border: 1px solid #ddd; border-radius: 4px; padding: 16px; } .card-header { font-size: 1.25em; margin-bottom: 10px; } .card-body { font-size: 1em; } </style>

使用插槽组件

复制代码
<!-- App.vue -->
<template>
  <div>
    <BaseCard>
      <template v-slot:header>
        <h2>Card Title</h2>
      </template>
      <p>This is the card content.</p>
    </BaseCard>
  </div>
</template>

<script>
import BaseCard from './components/BaseCard.vue'

export default {
  name: 'App',
  components: {
    BaseCard
  }
}
</script>

作用域插槽:

组件:

复制代码
<!-- BaseCard.vue -->
<template>
  <div class="card">
    <div class="card-header">
      <slot name="header" :title="headerTitle"></slot>
    </div>
    <div class="card-body">
      <slot></slot>
    </div>
  </div>
</template>

<script>
export default {
  name: 'BaseCard',
  data() {
    return {
      headerTitle: 'Default Title'
    }
  }
}
</script>

使用:

复制代码
<!-- ParentComponent.vue -->
<template>
  <div>
    <BaseCard>
      <template v-slot:header="slotProps">
        <h2>{{ slotProps.title }}</h2>
      </template>
      <p>This is the card content.</p>
    </BaseCard>
  </div>
</template>

<script>
import BaseCard from './components/BaseCard.vue'

export default {
  name: 'ParentComponent',
  components: {
    BaseCard
  }
}
</script>
相关推荐
来自星星的坤27 分钟前
Vue 3中如何封装API请求:提升开发效率的最佳实践
前端·javascript·vue.js
程序猿熊跃晖3 小时前
Vue中如何优雅地处理 `<el-dialog>` 的关闭事件
前端·javascript·vue.js
前端开心果3 小时前
vue实现静默打印pdf
前端·vue.js·pdf
OpenTiny社区5 小时前
TinyVue v3.22.0 正式发布:深色模式上线!集成 UnoCSS 图标库!TypeScript 类型支持全面升级!
前端·vue.js·开源
工业互联网专业6 小时前
基于JavaWeb的花店销售系统设计与实现
java·vue.js·spring boot·毕业设计·源码·课程设计·花店销售系统
会飞的鱼先生7 小时前
vue3中slot(插槽)的详细使用
前端·javascript·vue.js
cg50177 小时前
Vue 的数据代理机制
前端·javascript·vue.js
编程老菜鸡8 小时前
Vue3-原始值的响应式方案ref
前端·javascript·vue.js
正在努力的前端小白8 小时前
Vue3可编辑字段组件的演进之路:从繁琐到优雅
前端·javascript·vue.js
前端爆冲9 小时前
基于vue和flex实现页面可配置组件顺序
前端·javascript·vue.js