广告
返回顶部
首页 > 资讯 > 精选 >vue.js中怎么封装table组件
  • 599
分享到

vue.js中怎么封装table组件

2023-06-20 20:06:07 599人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关vue.js中怎么封装table组件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。为什么封装首先为什么封装,是因为追求技术吗,不,是因为懒,不想一直的去粘贴,所以

这篇文章将为大家详细讲解有关vue.js中怎么封装table组件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。


为什么封装

首先为什么封装,是因为追求技术吗,不,是因为懒,不想一直的去粘贴,所以就想把table封装下,可以在创建新的table的时候,只需要填充数据就行了。

封装的内容都有哪些

主要有两个,一个是table组件,一个是分页组件

搞清楚这个些,就可以开始封装组件了。

封装table组件

确认数据格式

先确定数据格式,这个我们需要看下el-table组件

<el-table :data="tableData" >   <el-table-column prop="date" label="日期" width="180" />   <el-table-column fixed="right" label="操作" width="100">      <template slot-scope="scope">        <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>        <el-button type="text" size="small">编辑</el-button>     </template>   </el-table-column></el-table>

现在我们考虑数据类型,例如lebel, prop, widht 按钮类型, 事件等等,

let paramsType = {  data: Array, // 数据  loading: Boolean,  selectionShow: Boolean,  columns:Array = [    {       label: String,      prop: String,      filter: Function,      isSlot: Boolean,      width: Number,      tempalte: Function,      btns: Array = [        { name: String,          btnType: String,          clickType: String,          routerType: String,          url: String,          query: Function,          btnClick: Function        }      ]    }  ] }

定义号数据文档后,我们就可以开始封装组件了

封装组件

封装全局组件

之所以封装全局组件是为了省事,所有的目的,全都是为了偷懒。

src下创建components文件,里边写我们的组件,每个组件建议单独文件夹,便于我们维护。

创建自己的table.Vue组件,名字我的叫FrTable,内容暂时先不说,先说引用。

全局使用

导入FrTable文件到components下的index.js文件中,在这里遍历所有的组件,并导出

代码如下:

import TrTable from './FrTable/index'const components = [TrTable]const install = (Vue) => {  components.map(component => {    Vue.component(component.name, component)  })}if (typeof Window !== 'undefined' && window.Vue) {  install(Window.Vue)}export default {  install}

然后导出到main.js中,通过Vue.use()来使用组件,如下

import globalComponents from '@/components/index'Vue.use(globalComponents)

页面中的使用

<fr-table />
table组件封装

考虑的问题

table中有多少种情况,

  • 正常的数据类型展示

  • 独有的展示方式

  • 有操作按钮

第一种的类型那我们其实是不需要操作太多,只需要通过for循环渲染就可以了。

第二种其实也还好,我们可以通过slot做定制化处理

第三种,按钮的操作。按钮其实可以分多种类型

按钮的类型

  1. 按钮的正常使用,点击功能

  2. 按钮起跳转作用

  3. 按钮起打开新页面的作用

  4. 按钮起自定义事件的作用

代码的编写

通过上边,我们已经分析了table的所有问题,现在只需要敲代码就可以了。

第一种情况

<el-table :data="data" border :loading="loading">        <!-- 勾选 -->   <el-table-column v-if="selectionShow" type="selection" width="50" align="center" :reserve-selection="true" />     <template v-for="(item, index) in columns">        <el-table-column :key="index" v-bind="item">            <!-- 自定义表头 -->          <template v-if="item.customHeader" slot="header">              <slot :name="item.headerProp" />          </template>          <template slot-scope="scope">               <span v-html="handleFilter(item, scope.row, item.prop)" />          </template>        </el-table-column>     </template> </el-table>

这里我们可以看到handleFilter方法

这个方法来处理数据,

数据类型分为正常数据类型,需要转化的数据类型,模板转化的数据类型,

代码如下

handleFilter(item, val, prop) {  let value = val[prop]  if (item.templet) value = item.templet(val)  return item.filter ? this.$options.filters[item.filter](val[prop]) : value},

第一种情况比较简单,只是简单的数据渲染,和定制化的表头渲染,上边总体的是多选功能+正常的表单

第二种情况

自定义的列表

<template slot-scope="scope">   <!-- 自定义内容 -->   <slot      v-if="item.isSlot"      :name="item.prop"      :row="scope.row"/   ></template>

自定义的类别,我们只需要isSlot设置为true,name为prop,row为data

第三种

第三种按钮分四种情况

<template v-if="item.btns">   <el-button     v-for="(btn, i) in item.btns"     :key="i"    class="mr_10"    :size="btn.mini ? btn.mini: 'small'"    :type="btn.type ? btn.type: 'primary'"    @click="btnClickfunc(btn, scope.row)"  >     {{ btn.name }}  </el-button></template>

按钮其实还是循环渲染的,主要是事件的分析,通过btnClickfunc事件操作。

btnClickfunc(column, row) {      const path = {        [column.routerType]: column.url,        query: column.query ? column.query(row) : ''      }      if (column.clickType === 'router') {        this.$router.push(path)      } else if (column.clickType === 'router_blank') {        const routeData = this.$router.resolve(path)        window.open(routeData.href, '_blank')      } else if (column.clickType === 'btnClick') {        column.btnClick(row)      } else {        this.$emit('btnClickFunc', { column: column, row: row })      }},

分不同的类型,我们做不同的处理。

props传参的值

当前的参数,和我们定义的参数是一致的,因此代码如下

  // 数据    data: {      type: Array,      required: true    },    // 表头参数    columns: {      type: Array,      required: true    },    loading: {      type: Boolean,      default: false    },    // 多选框选择    selectionShow: {      type: Boolean,      default: false    },

自此,只剩下了组件的使用方式了

组件的使用

<fr-table      ref="mt"      :loading="loading"      :data="list"      :columns="columns"    ></fr-table>

大致如下,如果需要使用多选的时候,自行定义方法,排序也一样。

分页组件封装

参考element分页组件

<el-pagination    background  layout="prev, pager, next"  :page-size="pageLimit"   :total="total"   :current-page="currentPage"   @current-change="handleCurrentChange"/>handleCurrentChange(val) {   console.log(val)}

数据定义

定义如下:

total: Number,pageLimit: Number,currentPage: Number,

封装

<el-pagination    background  layout="prev, pager, next"  :page-size="pageLimit"  :total="total"  :current-page="currentPage"  @current-change="handleCurrentChange"/>handleCurrentChange(val) {   this.$emit('currentChange', val)}

关于vue.js中怎么封装table组件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: vue.js中怎么封装table组件

本文链接: https://www.lsjlt.com/news/299757.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue.js中怎么封装table组件
    这篇文章将为大家详细讲解有关vue.js中怎么封装table组件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。为什么封装首先为什么封装,是因为追求技术吗,不,是因为懒,不想一直的去粘贴,所以...
    99+
    2023-06-20
  • vue.js管理后台table组件封装的方法
    目录问题分析 为什么封装 封装的内容都有哪些 封装table组件 确认数据格式 封装组件 封装全局组件 table组件封装 分页组件封装 数据定义 封装 总结最近开了新的项目,简单说...
    99+
    2022-11-12
  • Element怎么使用el-table组件实现二次封装
    这篇文章主要讲解了“Element怎么使用el-table组件实现二次封装”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Element怎么使用el-table组件实现二次封装”吧!一、安装引...
    99+
    2023-07-02
  • Element使用el-table组件二次封装
    目录前言一、安装引入二、封装功能三、样式覆盖四、使用组件前言 在vue开发中使用element-ui的el-table时一般都需要进行封装以便于复用,提高开发效率,减少重复代码,这篇...
    99+
    2022-11-13
  • Vue3怎么封装组件
    这篇文章主要讲解了“Vue3怎么封装组件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3怎么封装组件”吧!例如我们在使用element的标签页tabs组件时,如下图所示:tabs组件可...
    99+
    2023-07-05
  • VB.NET中怎么实现组件封装
    这篇文章给大家介绍VB.NET中怎么实现组件封装,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。新建一个项目,选择Visual Basic \ Window \ 类库,假设项目名为ClassLibrary1然后 在sol...
    99+
    2023-06-17
  • vue3怎么封装ECharts组件
    一、前言前端开发需要经常使用ECharts图表渲染数据信息,在一个项目中我们经常需要使用多个图表,选择封装ECharts组件复用的方式可以减少代码量,增加开发效率。二、封装ECharts组件为什么要封装组件避免重复的工作量,提升复用性使代码...
    99+
    2023-05-20
    Vue3 echarts
  • React怎么封装SvgIcon组件
    本篇内容介绍了“React怎么封装SvgIcon组件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!React优雅的封装SvgIcon组件相信...
    99+
    2023-07-05
  • Vue封装通用table组件的详细步骤
    本篇内容介绍了“Vue封装通用table组件的详细步骤”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录前言为什么需要封装table组件?定...
    99+
    2023-06-20
  • 小程序怎么封装组件
    小编给大家分享一下小程序怎么封装组件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信小程序封装组件具体实现步骤:新建component文件夹存放我们的组件,里边...
    99+
    2023-06-26
  • Vue组件封装怎么实现
    这篇文章主要介绍“Vue组件封装怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue组件封装怎么实现”文章能帮助大家解决问题。一、组件封装的优势复用性:组件封装可以将常用的功能或视图模块抽象...
    99+
    2023-07-05
  • vue.js基于ElementUI封装了CRUD的弹框组件
    目录前言开始封装json对象如下所示table表头作为列表传入,数据结构如下在子组件中循环渲染出表头在父组件中调用前言 代码写得不好,为什么不封装一下呢,如果用的是ElementUI...
    99+
    2022-11-13
  • Vue封装通用table组件的完整步骤记录
    目录前言 为什么需要封装table组件? 第一步:定义通用组件 第二步:父组件与子组件进行render通信 第三步:使用组件 总结 前言 随着业务的发展和功能的增多,我们发现不少页...
    99+
    2022-11-12
  • Vue中怎么对ElementUI的Dialog组件封装
    本篇内容主要讲解“Vue中怎么对ElementUI的Dialog组件封装”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue中怎么对ElementUI的Dialog组件封装”吧!对Element...
    99+
    2023-07-05
  • vue.js基于ElementUI如何封装CRUD的弹框组件
    本文小编为大家详细介绍“vue.js基于ElementUI如何封装CRUD的弹框组件”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue.js基于ElementUI如何封装CRUD的弹框组件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢...
    99+
    2023-07-02
  • Angular中怎么封装一个并发布组件
    本篇文章为大家展示了Angular中怎么封装一个并发布组件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、封装组件目录结构:(部分目录不是框架中自动生成,二是后期...
    99+
    2022-10-19
  • vue中怎么封装一个弹出框组件
    这期内容当中小编将会给大家带来有关vue中怎么封装一个弹出框组件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.你需要先建一个弹出框的模板://首先创建一个mack.v...
    99+
    2022-10-19
  • 怎么用Vue封装全局toast组件
    本篇内容介绍了“怎么用Vue封装全局toast组件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一. 借助...
    99+
    2022-10-19
  • vue怎么自定义封装API组件
    这篇文章主要介绍vue怎么自定义封装API组件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!自定义封装API组件1.创建vue组件<template>    <...
    99+
    2023-06-29
  • vue中的slot封装组件弹窗怎么实现
    这篇文章主要介绍了vue中的slot封装组件弹窗怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue中的slot封装组件弹窗怎么实现文章都会有所收获,下面我们一起来看看吧。slot封装组件弹窗<t...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作