Naive UI之数据表格 Data Table 分页

本文介绍了如何使用Vue的n-data-table实现数据远程加载和动态分页功能,包括接口参数管理、状态管理以及如何在接口响应后更新表格数据和总记录数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<n-data-table
          remote
          ref="actionRef"
          :columns="columns"
          :data="tableData"
          :pagination="paginationReactive"
          :bordered="false"
          :max-height="550"
        />
//接口需要传的参数
const params = ref({
    term: '',
    current:1,
    size:10
  });

const paginationReactive = reactive({
    page: 1,
    pageSize: 10,
    showSizePicker: false,//每页显示选项
    pageSizes: [10, 20, 30],
    onChange: (page: number) => {//切换第几页时
      paginationReactive.page = page;
      params.value.current = page;
      getList(params.value).then((res) => {
        tableData.value = res.records;
        paginationReactive.itemCount = res.total;
      });
    },
    onUpdatePageSize: (pageSize: number) => {
      paginationReactive.pageSize = pageSize;
      paginationReactive.page = 1;
      params.value.current = 1;
      getOrgList(params.value).then((res) => {
        tableData.value = res.records;
        paginationReactive.itemCount = res.total;
      });
    }
  })

接口请求

onMounted(async () => {
    getList(params.value).then((res) => {
      tableData.value = res.records;
      paginationReactive.itemCount = res.total //总记录数
    });
  });

接口请求后需要设置下itemCount,否则只能出来一页

paginationReactive.itemCount = res.total

### 使用 Naive-UI 中的数据表格组件 Naive-UI 是一个基于 Vue 3 的 UI 组件库,提供了丰富的组件来构建现代化的 Web 应用程序。数据表格 (DataTable) 组件用于展示大量结构化数据,并支持多种交互操作。 #### 安装依赖项 为了使用 Naive-UI 及其 DataTable 组件,需先安装必要的 npm 包: ```bash npm install naive-ui ``` #### 基本配置 引入整个 Naive-UI 或按需加载特定组件到项目中: ```javascript import { createApp } from 'vue'; import App from './App.vue'; // 引入全部组件 import NaiveUi from 'naive-ui'; const app = createApp(App); app.use(NaiveUi); app.mount('#app'); ``` 对于按需导入的方式可以借助 `unplugin-vue-components` 和 `unplugin-auto-import` 插件实现自动化处理[^1]。 #### 创建简单的 Data Table 实例 下面是一个基本的例子展示了如何创建并渲染带有固定列宽和分页功能的数据表单: ```html <template> <n-data-table :columns="columns" :data="data" :pagination="{ pageSize: 5 }"/> </template> <script setup lang="ts"> import { h, defineComponent } from 'vue' import { NButton, NSpace } from 'naive-ui' interface RowData { key: number; name: string; age: number; } const columns = [ { title: '姓名', key: 'name', width: 150, }, { title: '年龄', key: 'age', sorter: true, defaultSortOrder: 'ascend', // 默认升序排列 } ] const data: RowData[] = Array.from({ length: 10 }, (_, index) => ({ key: index, name: `张三 ${index}`, age: Math.floor(Math.random() * 20), })) </script> ``` 此示例定义了一个包含两列 (`姓名`, `年龄`) 的表格,并设置了每页显示五条记录的分页器。还启用了对 "年龄" 列的支持排序特性,默认按照升序顺序呈现。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值