vue具名插槽

42 篇文章 0 订阅

目标

核心功能分析:

  1. PageTools 公共组件封装

  1. Excel 导入导出功能

  1. 员工列表表格渲染

  1. 分页功能

讲解

分析

在后续的业务开发中,我们经常会用到一个类似下图的工具栏,因此需要可以将其封装成公共组件,方便复用

问: 左侧的提示消息 和 右侧按钮 在每个页面中并不是一致的,怎么处理呢 ?

答案

实现
  1. 创建组件实现基本结构,新建 src\components\PageTools\index.vue 文件,,实现页面结构的创建

<template>
  <el-card>
    <divclass="page-tools">
      <!-- 左侧 -->
      <divclass="left">
        <divclass="tips">
          <iclass="el-icon-info"/>
          <span>文字区域</span>
        </div>
      </div>
​
      <divclass="right">
        <!-- 右侧 -->
        按钮区域
      </div>
    </div>
  </el-card>
</template>
​
<script>
exportdefault {}
</script>
​
<stylelang="scss"scoped>
.page-tools {
  display: flex;
  justify-content: space-between;
  align-items: center;
​
  .tips {
    line-height: 34px;
    padding: 0px15px;
    border-radius: 5px;
    border: 1pxsolidrgba(145, 213, 255, 1);
    background: rgba(230, 247, 255, 1);
​
    i {
      margin-right: 10px;
      color: #409eff;
    }
  }
}
</style>

  1. 定义左右两侧内容的具名插槽

  • 我们定义了两个具名插槽,将来在使用组件的时候,只需要按照对应的插槽名称就可以在特定的位置插入内容

  • slot-left 左侧的文本区域

  • slot-right 右侧按钮区域

<template>
  <el-card>
    <divclass="page-tools">
      <!-- 左侧 -->
      <divclass="left">
        <divclass="tips">
          <iclass="el-icon-info"/>
          <slotname="slot-left">
            <span>文字区域</span>
          </slot>
        </div>
      </div>
​
      <divclass="right">
        <!-- 右侧 -->
        <slotname="slot-right">
          <span>按钮区域</span>
        </slot>
      </div>
    </div>
  </el-card>
</template>

  1. 在 src\views\employees\index.vue 组件中使用封装的 PageTools 组件

  • 导入注册组件

  • 使用组件的时候注入自定义内容

<template>
  <divclass="employees-container">
    <divclass="app-container">
      <!-- 通用工具栏组件使用 -->
      <page-tools>
        <!-- 自定义左侧内容 -->
        <template#slot-left>
          <span>共 19 条记录</span>
        </template>
​
        <!-- 自定义右侧内容 -->
        <template#slot-right>
          <el-buttontype="danger"size="small">导入excel</el-button>
          <el-buttontype="success"size="small">导出excel</el-button>
          <el-buttontype="primary"size="small">新增员工</el-button>
        </template>
      </page-tools>
    </div>
  </div>
</template>
​
<script>
// 导入组件
importPageToolsfrom'@/components/PageTools'
​
exportdefault {
  components: {
    PageTools// 导入自定义组件
  }
}
</script>
​
<stylelang="scss"scoped></style>

小结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值