经典之Vue 3实现动态数据表格

在当今的前端开发领域,数据表格是展示信息的王道。Vue 3,结合其生态系统中的Ant Design Vue UI库,为开发者提供了一整套工具来构建高效、响应式的动态数据表格。本篇博客将使用Vue 3和Ant Design Vue,一步步搭建起一个从后端API获取数据并展示的动态数据表格。 

一、项目背景与技术选型

为何选择Vue 3和Ant Design Vue?Vue 3以其性能的提升和新引入的Composition API而备受青睐,而Ant Design Vue则提供了一套企业级的UI组件,它们结合使用,能够快速构建高质量的数据表格。(当然,Element-Plus也是几乎一样的运用)

二、依赖安装

首先,确保您已创建Vue 3项目,并安装了Ant Design Vue依赖:

npm i --save ant-design-vue@3.2.20
或者
cnpm i ant-design-vue --save

三、创建表格组件

创建一个名为DynamicTable.vue的新文件,这将是我们动态数据表格的组件。

四、后端数据准备

这里不过多赘述,主要保证接口能正确获取数据就行。

四、api层设计

index.js

/**
 * 环境配置文件
 * 三个环境
 * 开发环境
 * 测试环境
 * 线上环境
 */
//env:当前环境 另外两个暂时不用管,用开发环境就行,按需设计
const env = process.env.MODE || 'develpoment';

const EnvConfig = {
    develpoment:{
        baseApi: "http://localhost:8088/",
    },
    test:{
        baseApi: "/api",
    },
    prod:{
        baseApi: "/api",
    },
}
export default {
    env,
    ...EnvConfig[env]
}

api.js

/**
 * 整个项目api的管理
 *
 */
import request from "./request"

export default {
    getTableData(params) {
        return request({
            url: '/getBookListS',
            method: 'get',
            data: params,
        })
    },
}

request.js

import axios from "axios";
import config from '../api/config'

//创建一个axios实例对象
const service = axios.create({
    baseURL: config.baseApi,
});

// 在请求之前做一些事情
service.interceptors.request.use( (req) => {
        //可以自定义header
        // jwt-token认证的时候
        return req;
    }
);


/*
 *在请求之后做一些事情
 *这部分最重要,根据自己的后端数据获取来写,否则很容易出现错误
 *比如方法能获取到数据但是表格内容无法显示的问题
 */
service.interceptors.response.use((response) => {
    // 检查 HTTP 响应状态码
    if (response.status === 200) {
        console.log('请求成功,返回数据:', response.data);
        return response; // 返回图书列表数组
    }
});

//封装的核心函数
function request(options){
    options.method = options.method || 'get'
    if(options.method.toLowerCase() == 'get'){
        options.params = options.data;
    }


    return service(options);
}
export default request;

四、模板编写

DynamicTable.vue的模板部分,我们使用a-table来构建表格的基本结构:

<template>
  <a-table :columns="columns" :data-source="data">
    <template #bodyCell="{ column, text }">
      <template v-if="column.dataIndex === 'categoryName'">
        {{ text }}
      </template>
    </template>
  </a-table>
</template>

五、脚本编写

<script>
import { defineComponent, ref, onMounted } from 'vue';
import api from "@/api/api";

// 初始数据数组
const data = ref([]);
// 表格列定义
const columns = [
  {
    title: '序号',
    dataIndex: 'id',
  },
  {
    title: '图书名称',
    dataIndex: 'name',
  },
  // ...其他列定义
];

export default defineComponent({
  setup() {
    // const { proxy } = getCurrentInstance();
    // 定义获取数据的异步函数
    const getTableList = async () => {
      let response = await api.getTableData();
    // 另一种写法
    // let response = await proxy.$api.getTableData();
    // 这种写法要在setup(){}内const { proxy } = getCurrentInstance();如上
    // 输入完这条语句proxy会自动导入
      data.value = response; // 假设API直接返回数据数组
    };

    // 组件挂载后调用getTableList
    onMounted(() => {
      getTableList();
    });

    // 返回响应式数据供模板使用
    return {
      columns,
      data,
    };
  },
});
</script>

六、表格列定义详解

在上述脚本中,columns数组定义了表格的列头和数据索引。每个对象包含titledataIndex属性,分别表示列头显示的文字和从数据源中对应的键。

七、数据获取与响应式更新

getTableList函数通过调用API接口获取数据,并将获取到的数据赋值给data.value,利用Vue 3的响应式系统,这将自动更新模板中的表格显示。

八、调试与测试

在开发过程中,使用console.log输出数据,检查网络请求是否成功,响应数据是否符合预期。

九、结论与进一步探索

通过本教程,我们已经成功创建了一个基本的动态数据表格。这只是一个起点,您可以根据需要添加更多功能,如分页、排序、筛选等。

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3 是一种流行的 JavaScript 框架,用于构建用户界面。在 Vue 3 中,可以使用动态表格来展示和编辑数据。下面是配置动态表格的一般步骤: 1. 安装 Vue 3:首先,确保你已经安装了 Vue 3 的开发环境。你可以通过 npm 或者 yarn 来安装 Vue 3。 2. 创建组件:创建一个 Vue 组件来承载动态表格。你可以使用 Vue 的单文件组件 (.vue) 或者普通的 JavaScript 文件来定义组件。 3. 定义数据:在组件中定义一个数据对象来存储表格的数据。你可以使用 Vue 的响应式数据特性来确保数据的变化能够自动更新视图。 4. 渲染表格:在组件的模板中使用 v-for 指令来遍历数据,并使用表格标签 (如 table、tr、td) 来渲染表格的结构。 5. 添加编辑功能:为了实现编辑功能,你可以在表格中添加可编辑的单元格,并使用 v-model 指令来绑定数据。当用户修改单元格的值时,数据会自动更新。 6. 添加其他功能:根据需求,你可以添加其他功能,如排序、过滤、分页等。Vue 3 提供了丰富的指令和插件来帮助你实现这些功能。 7. 样式设计:最后,你可以使用 CSS 来设计表格的样式,使其符合你的需求和品味。 这只是一个简单的概述,实际上配置动态表格可能涉及到更多的细节和复杂性。你可以参考 Vue 3 的官方文档和相关教程来深入学习和了解更多关于配置动态表格的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值