Skip to content

快速开始 ​

这一页从一个本地数组开始,先确认表格能正常显示;下一步再接入远程请求。

准备列配置 ​

columns 决定表格显示哪些列,以及每一列如何渲染:

ts
import type { TableProColumn } from 'element-plus-suite'

interface User {
  id: number
  name: string
  email: string
}

const columns: TableProColumn<User>[] = [
  { prop: 'name', label: '姓名', minWidth: 140 },
  { prop: 'email', label: '邮箱', minWidth: 220 },
]

渲染本地数据 ​

vue
<script setup lang="ts">
import { ElTablePro } from 'element-plus-suite'

const dataSource = [
  { id: 1, name: '林晓', email: 'linxiao@example.com' },
  { id: 2, name: '陈默', email: 'chenmo@example.com' },
]
</script>

<template>
  <ElTablePro
    :columns="columns"
    :data="dataSource"
    row-key="id"
    :pagination="false"
  />
</template>

接入远程请求 ​

把 data 换成 request:

ts
const requestUsers: TableProRequest<User> = async ({ page, pageSize, signal }) => {
  const params = new URLSearchParams({
    page: String(page ?? 1),
    pageSize: String(pageSize ?? 20),
  })
  const response = await fetch(`/api/users?${params}`, { signal })
  const payload = await response.json()

  return {
    data: payload.list,
    total: payload.total,
  }
}

request 的返回值格式固定,接口原始结构在函数内部适配即可。

主动刷新 ​

需要搜索或新增数据后刷新时,通过实例方法调用:

ts
const tableRef = ref<TableProInstance>()

function search() {
  tableRef.value?.reload({ page: 1 })
}