一次用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.js 2.5新特性介绍(推荐)

    Vue.js 2.5新特性介绍(推荐) Vue.js 2.5是Vue.js的一个重要版本,在它被发布后,带来了很多有用的新特性和重要的改进,使得Vue.js更加易用且强大。在本文中,我们将会介绍Vue.js 2.5中的主要新特性,并且提供一些例子来说明它们的用法。 渐进式渲染(SSR) Vue.js 2.5是一个完全支持服务器端渲染的版本。服务器端渲染(SS…

    Vue 2023年5月27日
    00
  • 如何理解Vue简单状态管理之store模式

    下面是关于如何理解Vue简单状态管理之store模式的完整攻略: 什么是Vue中的store模式 在Vue.js中,store模式是一种用于管理应用程序状态的场所。这个模式主要是围绕一个全局的状态树进行设计的,这个状态树可以通过store对象中定义的getter函数进行访问,并且这个状态树中的所有变化均可被自动地保存下来。在整个应用的开发过程中,你的每一个组…

    Vue 2023年5月29日
    00
  • Vue导出Excel功能的全过程记录

    下面是详细讲解“Vue导出Excel功能的全过程记录”的完整攻略。 1. 背景说明 Excel是一个办公软件中常用的工具,它可以方便地进行表格数据的输入和编辑。在Web应用中,我们可能需要将表格数据以Excel格式导出,这就需要实现一个导出Excel的功能。Vue是一款流行的JavaScript框架,本文将介绍如何在Vue项目中实现导出Excel的功能。 2…

    Vue 2023年5月27日
    00
  • Vue cli及Vue router实例详解

    Vue cli及Vue router实例详解 什么是Vue cli? Vue cli是一个构建Vue.js项目的基础工具。通过Vue cli可以创建一个基本的Vue.js项目,它包含了一些常用的插件和配置,可以优化我们的开发体验。Vue cli本身还提供了一些命令行工具来帮助我们快速创建组件、安装插件等操作。 如何安装Vue cli? 在开始使用Vue cl…

    Vue 2023年5月28日
    00
  • Vue.js中class与style的增强绑定实现方法

    Vue.js中class与style的增强绑定实现方法有以下几种方式: 1. 对象语法 对象语法是Vue.js中一个常用的class及style的绑定方式,可以通过传入一个对象的方式来动态的限制元素的class或style属性。 添加class 在Vue.js中,我们可以通过v-bind:class或简写为:class来绑定元素的class属性。下面的代码演…

    Vue 2023年5月27日
    00
  • vue和webpack安装命令详解

    下面详细介绍一下如何安装 vue 和 webpack,以及相应的命令详解。 Vue.js 的安装 全局安装 可以使用以下命令全局安装 Vue CLI: npm install -g @vue/cli 如果你是 Mac 系统,并且使用了 Homebrew,则可以使用以下命令: brew install node 然后再使用全局安装命令: npm install…

    Vue 2023年5月29日
    00
  • vue2.x数组劫持原理的实现

    来详细讲解一下“vue2.x数组劫持原理的实现”的完整攻略。 什么是vue2.x数组劫持 在vue2.x中,当我们使用Vue实例化一个对象时,如果这个对象是一个数组,那么Vue会对这个数组进行劫持,也就是我们所说的“数组响应式”。 所谓的“数组响应式”,就是指当我们对数组进行增、删、改、查等操作时,Vue会自动识别这些变化,并及时地更新视图。 数组劫持原理的…

    Vue 2023年5月29日
    00
  • Vue的基本知识你都了解吗

    Vue的基本知识攻略 Vue是一个渐进式框架,可以帮助我们轻松构建交互式的Web界面。本攻略将围绕Vue的基本知识进行讲解。 Vue是什么 Vue是一个JavaScript框架,用于构建Web界面。它允许我们将数据绑定到DOM上,并提供了许多轻松处理用户输入、组件化、路由等方面的工具,同时还可以与其他框架(如React和Angular)一起使用。 Vue的核…

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