一次用vue3简单封装table组件的实战过程

下面给出使用Vue 3简单封装table组件的完整攻略:

1. 创建组件

首先,我们需要在Vue项目中创建一个table组件。可以通过以下命令创建:

vue create my-app

其中,my-app是你的项目名称。

在创建好项目后,我们可以在src/components目录下创建一个table目录,并在其中添加Table.vue文件来实现Table组件。Table.vue中的基本代码结构如下:

<template>
  <div>
    <!-- 表格内容 -->
  </div>
</template>

<script>
export default {
  name: 'Table',
  props: {
    // 表格相关的属性
  },
  data() {
    return {
      // 表格相关的数据
    }
  },
  methods: {
    // 表格相关的方法
  }
}
</script>

在组件中,我们需要定义一些props来实现参数的传递,并且需要设置一些数据和方法来实现表格的渲染和操作。

2. 渲染表头和表格内容

接下来,我们需要在Table.vue中添加表头和内容的渲染机制。可以通过以下代码实现:

<template>
  <div>
    <table>
      <thead>
        <tr>
          <th v-for="(column, index) in columns" :key="index">{{ column.title }}</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item, index) in data" :key="index">
          <td v-for="(column, idx) in columns" :key="idx">{{ item[column.key] }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
export default {
  name: 'Table',
  props: {
    columns: {
      type: Array
    },
    data: {
      type: Array
    }
  },
  data() {
    return {}
  },
  methods: {}
}
</script>

在代码中,利用v-for指令遍历columns数组和data数组分别渲染表头和表格内容。columns数组用于存储表头信息,包括每一列的标题、宽度、数据源等,而data数组则是表格数据的来源。

3. 实现表格的排序功能

排序是常用的表格操作之一,下面给出在Table组件中实现排序的代码:

<template>
  <div>
    <table>
      <thead>
        <tr>
          <th v-for="(column, index) in columns" :key="index" @click="handleSort(column.key)">
            {{ column.title }} <span v-if="column.key === sortField">{{ sortType === 'asc' ? '↑' : '↓' }}</span>
          </th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item, index) in dataSorted" :key="index">
          <td v-for="(column, idx) in columns" :key="idx">{{ item[column.key] }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
export default {
  name: 'Table',
  props: {
    columns: {
      type: Array
    },
    data: {
      type: Array
    }
  },
  data() {
    return {
      sortField: '',
      sortType: '',
      dataSorted: this.data
    }
  },
  methods: {
    handleSort(key) {
      if (this.sortField === key) {
        this.sortType = this.sortType === 'asc' ? 'desc' : 'asc'
      } else {
        this.sortField = key
        this.sortType = 'asc'
      }

      this.dataSorted = this.data.slice().sort((a, b) => {
        if (this.sortType === 'asc') {
          return a[key] - b[key]
        } else {
          return b[key] - a[key]
        }
      })
    }
  }
}
</script>

在代码中,定义了sortFieldsortType属性来记录当前排序的字段和方式。在表头中,添加了一个点击事件@click来触发handleSort方法,该方法用于改变sortFieldsortType的值,并重新对数据源data进行排序,最后将排序后的数据存入dataSorted属性中。

以上就是用Vue 3简单封装table组件的完整攻略,下面给出两个相关的示例说明:

示例一:使用table组件渲染静态数据

<template>
  <div>
    <Table :columns="columns" :data="data" />
  </div>
</template>

<script>
import Table from '@/components/table/Table.vue'

export default {
  name: 'Demo',
  components: {
    Table
  },
  data() {
    return {
      columns: [
        {
          title: '姓名',
          key: 'name'
        },
        {
          title: '年龄',
          key: 'age'
        },
        {
          title: '性别',
          key: 'gender'
        }
      ],
      data: [
        {
          name: '小红',
          age: 23,
          gender: '女'
        },
        {
          name: '小明',
          age: 26,
          gender: '男'
        },
        {
          name: '小兔',
          age: 27,
          gender: '女'
        },
        {
          name: '小黄',
          age: 22,
          gender: '男'
        }
      ]
    }
  }
}
</script>

在代码中,引入了Table组件,并通过columnsdata两个props来传递表头和表格数据。注意,这里的数据是静态的,在实际操作中可能需要从后台接口动态获取。

示例二:在使用table组件时实现排序功能

在这个示例中,我们需要使用Table组件展示从后台获取的数据,并实现排序功能。可以通过以下代码实现:

<template>
  <div>
    <Table :columns="columns" :data="data" :sort-field="sortField" :sort-type="sortType" @sort-change="handleSortChange" />
  </div>
</template>

<script>
import axios from 'axios'
import Table from '@/components/table/Table.vue'

export default {
  name: 'Demo',
  components: {
    Table
  },
  data() {
    return {
      columns: [
        {
          title: 'ID',
          key: 'id'
        },
        {
          title: '名称',
          key: 'name'
        },
        {
          title: '创建时间',
          key: 'createTime'
        }
      ],
      data: [],
      sortField: '',
      sortType: ''
    }
  },
  methods: {
    fetchData() {
      axios.get('/api/data').then(res => {
        this.data = res.data
      })
    },

    handleSortChange(sortField, sortType) {
      this.sortField = sortField
      this.sortType = sortType
      this.fetchData()
    }
  },
  created() {
    this.fetchData()
  }
}
</script>

在代码中,引入了axios库来发送网络请求并获取后台的数据,将数据存入data数组中,然后传递给Table组件进行渲染。同时,添加了sort-fieldsort-type两个props来传递排序的字段和方式,并通过@sort-change事件监听Table组件中排序的变化,触发handleSortChange方法重新获取数据并渲染表格。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一次用vue3简单封装table组件的实战过程 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue + Webpack + Vue-loader学习教程之相关配置篇

    关于“Vue + Webpack + Vue-loader学习教程之相关配置篇”的完整攻略,我们需要从以下几个方面来讲解。 1. 安装Webpack 首先,在开始之前我们需要安装Webpack,可以在终端中输入以下命令进行安装: npm install –save-dev webpack 2. 安装Vue.js和Vue-loader 接下来,我们需要安装V…

    Vue 2023年5月28日
    00
  • vue项目添加多页面配置的步骤详解

    针对“vue项目添加多页面配置的步骤详解”的完整攻略,以下是具体步骤: 1. 安装 vue-cli,并创建项目 首先,你需要在电脑上安装好 vue-cli,这里以 vue-cli 3.x 为例,使用如下命令进行安装: npm install -g @vue/cli 安装完成后,可以使用 vue –version 检查一下是否成功安装。接着,使用 vue c…

    Vue 2023年5月28日
    00
  • 解析vue3的ref,reactive的使用和原理

    解析vue3的ref, reactive的使用和原理 什么是vue3的ref和reactive vue3 是一种流行的前端框架,它通过使用 ref 和 reactive 方法来管理应用程序状态。 ref 方法用于创建一个响应式数据对象,它可以包装变量并返回一个 ref 对象。ref 返回的对象具有 value 属性,它的值等于包装的变量的值。当包装的变量的值…

    Vue 2023年5月28日
    00
  • JS实现的幻灯片切换显示效果

    当下,网站的幻灯片切换效果越来越流行,JS作为前端语言自然是实现幻灯片切换的最佳选择。下面我将详细讲解JS实现的幻灯片切换显示效果的攻略,包含如何引入JS库,如何使用JS实现切换效果等重要内容。 引入JS库 要实现幻灯片切换效果,首先要引入JS库。目前比较流行的JS库有jQuery和Zepto.js,我们可以根据项目的实际需求选择不同的库进行引入。比如我们使…

    Vue 2023年5月28日
    00
  • mpvue 项目初始化及实现授权登录的实现方法

    mpvue 项目初始化及实现授权登录的实现方法 简介 mpvue 是基于 Vue.js 的小程序开发框架,使我们可以使用 Vue.js 的语法来开发小程序,同时支持快速构建项目以及各种插件。授权登录是小程序中必不可少的一部分,本文将讲解如何使用 mpvue 实现授权登录。 前置条件 了解 Vue.js 和小程序,了解基本的前端开发知识 安装并配置好小程序开发…

    Vue 2023年5月27日
    00
  • vue3+ts+vite+electron搭建桌面应用的过程

    下面是关于使用Vue3、TypeScript、Vite和Electron搭建桌面应用的完整攻略。 搭建步骤 1. 创建项目工程 首先需要安装Vite脚手架,在终端中输入以下命令安装: npm install -g create-vite-app 安装完成后,通过以下命令创建项目工程: create-vite-app my-project 此时会询问你需要使用…

    Vue 2023年5月28日
    00
  • vue + elementUI实现省市县三级联动的方法示例

    下面我将为您详细讲解“vue + elementUI实现省市县三级联动的方法示例”的完整攻略。 1. 确定数据来源 实现省市县三级联动功能,首先需要确定数据来源,可以在后端中获取,也可以使用前端数据。本文以前端数据为例,数据格式如下: const regionData = [ { value: ‘110000’, label: ‘北京市’, children…

    Vue 2023年5月28日
    00
  • 玩转Koa之核心原理分析

    “玩转Koa之核心原理分析”是一篇讲解Koa框架核心原理的文章,下面是该攻略的完整讲解: 玩转Koa之核心原理分析 什么是Koa Koa是一个轻量级的Node.js web框架,由 Express 幕后的团队设计开发,同样基于中间件思想,以更优雅、简洁的语法和更强大的错误处理能力,让 Web 开发变得更加得简单、快速和可靠。 Koa的核心原理 Koa的核心原…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部