@bhplugin/vue3-datatable

中文文档
3.0.0发布于 2026/04/16MITTypeScriptESM + CJS零依赖近 30 天下载 1.7万

Vue3 数据表 - 完全自定义并易于使用数据表库

中文使用文档
文档目录19 节
  1. 示例
  2. 安装
  3. 使用量
  4. 道具
  5. 列缩放键
  6. 栏定义
  7. 活动
  8. 活动规则
  9. 方法
  10. 槽数
  11. 自定义单元格渲染( 按列字段命名)
  12. 插孔箭头插槽
  13. 状态空位
  14. 服务器模式示例
  15. 更改日志
  16. 许可证
  17. 我们的其他插件
  18. 角数据表 - @bhplugin/ng-数据表
  19. 支助

@bhplugin/vue3-数据表

零依赖 Vue 3 数据表组件,包含客户端/服务器侧页,排序,过滤,行选择,以及自定义单元格渲染等功能.

示例

文档演示文稿( D)

安装

国家预防机制

npm install @bhplugin/vue3-datatable --save

雅伦

yarn add @bhplugin/vue3-datatable

使用量

<template>
    <vue3-datatable :rows="rows" :columns="cols" :sortable="true" :columnFilter="true"> </vue3-datatable>
</template>

<script setup lang="ts">
    import { ref } from "vue";
    import Vue3Datatable from "@bhplugin/vue3-datatable";
    import type { IColumnDefinition } from "@bhplugin/vue3-datatable";
    import "@bhplugin/vue3-datatable/dist/style.css";

    const cols = ref<IColumnDefinition[]>([
        { field: "id", title: "ID", isUnique: true, type: "number", filter: false },
        { field: "name", title: "Name" },
        { field: "email", title: "Email" },
        { field: "age", title: "Age", type: "number" },
        { field: "dob", title: "Date of Birth", type: "date" },
        { field: "isActive", title: "Active", type: "bool" },
        { field: "address.city", title: "City" },
    ]);

    const rows = ref<Array<Record<string, unknown>>>([
        { id: 1, name: "John Doe", email: "[email protected]", age: 28, dob: "1997-05-15", isActive: true, address: { city: "New York" } },
        { id: 2, name: "Jane Smith", email: "[email protected]", age: 34, dob: "1991-11-22", isActive: false, address: { city: "London" } },
        // ...
    ]);
</script>

道具

Prop类型默认说明
栏 (必须)IColumnDefinition[][]表格栏定义
行数 (必须)Record[][]表格行数据
是服务器模式booleanfalse启用服务器侧模式( 残疾客户端排序/ filter/ pgination)
共计number0总行数( 在服务器模式下需要)
皮肤string"bh-table-striped bh-table-hover"表皮类 : bh-table-striped, (中文(简体) ), bh-table-hover, (中文(简体) ), bh-table-bordered, (中文(简体) ), bh-table-compact
装入booleanfalse显示加载覆盖/ skeleton
有检查框booleanfalse显示行选择的复选框列
搜索string""全局搜索字符串
页 次number1当前页面( 基于 1 个)
页面大小number10每页行数
页面大小选项number[][10, 20, 30, 50, 100]页面大小下拉选项
显示页码booleantrue显示页面大小
行分类string | Function""自定义行类(字符串或 (row) => string(中文(简体) )
单元格分类string | Function""自定义单元格类(字符串或 (row) => string(中文(简体) )
可排序booleanfalse启用列排序
排序颜色string""初始排序列字段
排序方向'asc' | 'desc'"asc"初始排序方向
分栏booleanfalse启用每栏过滤输入
列数Record<string, string>null过滤条件的i18n标签(见下文)
标记booleantrue显示页形
显示数字booleantrue显示页码按钮
显示数字number5最大可见页码按钮
显示第一页booleantrue显示第一页按钮
显示最后页booleantrue显示最后一页按钮
页形信息string"Showing {0} to {1} of {2} entries"插件信息模板( E){0} =开始, {1} =结束, {2} =共计)
无数据关联string"No data available"空状态文本
骨架number10装入时的骨架行数
粘结页眉booleanfalse粘贴表头
高度string"500px"可滚动高度( 仅限 stickyHeader(中文(简体) )
粘接第一相册booleanfalse粘贴第一列
克隆页眉InFooterbooleanfalse克隆头为页脚行
选择RowOnClickbooleanfalse点击切换行选择

列缩放键

{
    no_filter: 'No filter',
    contain: 'Contain', not_contain: 'Not contain',
    equal: 'Equal', not_equal: 'Not equal',
    start_with: 'Starts with', end_with: 'Ends with',
    greater_than: 'Greater than', greater_than_equal: 'Greater than or equal',
    less_than: 'Less than', less_than_equal: 'Less than or equal',
    is_null: 'Is null', is_not_null: 'Not null',
    all: 'All', true: 'True', false: 'False'   // boolean column filter labels
}

栏定义

Prop类型默认说明
是独一无二的booleanfalse标记为唯一行标识符( 用于选择密钥)
字段string""数据字段路径( 支持点标记 : address.city(中文(简体) )
标题string""列头文字
价值string""初始过滤值
条件IFilterCondition""默认过滤条件( E)contain 用于字符串, equal 数字/ 日期, 布尔为空)
类型string"string"列类型 : string, (中文(简体) ), number, (中文(简体) ), date, (中文(简体) ), bool
宽度string""列宽( 例如 ), "200px"(中文(简体) )
微风string""最小列宽
最大宽度string""最大列宽
隐藏booleanfalse从渲染中隐藏列
过滤器booleantrue启用列过滤器
搜索booleantrue全局搜索中包含
排序booleantrue启用排序
(简体中文)booleanfalse列包含原始 HTML
单元格渲染器Function- 说吧自定义单元格渲染器 : (row) => '<strong>html</strong>' (自动化)
页眉分类string""自定义信头单元格类
单元格分类string""自定义细胞类

活动

活动有效载荷说明
更改服务器IServerChangeResponse仅服务器模式——具有完整状态的聚合事件(页面、排序、搜索、过滤器、更改 类型)
页面变化number用户点击了 pagination 按钮( 静默于程序重排)
页面变更number页面大小下降已更改
排序变化ISortChangeResponse应用的列排序( 不重设页面)
过滤变化IColumnDefinition[]列过滤值或条件已更改
搜索变化string全局搜索文件已更改
选择行Record[]行选择已更改( 只有用户交互)
划线Record单行点击
线条 DBClickRecord双击行
重设- 说吧reset() 被调用——仅在重置时发生,所有其他被压制

活动规则

  • 排序对 没有 重置页面
  • 过滤/ 搜索/ 页面大小重排到第 1 页, 但只发布特定事件( 不) pageChange(中文(简体) )
  • pageChange 仅来自明确用户 pagination 点击的点火
  • 重置期间,仅限 reset (+ 数) changeServer (在服务器模式中) 发出——所有其他事件被压制

方法

方法说明
重设( c)重置所有状态( 选择、 过滤、 搜索、 排序、 页面)
获得FilteredRows ()返回所有已过滤行
获取可视Rows ()返回当前页面可见行
获取 ColumnFilters ()以当前过滤状态返回列定义
获取选中的Rows ()返回所有所选行
清除选中的Rows ()取消所有行的选择
选择Row( 索引)按索引选择行
未选择Row( 索引)按索引删除行
是 RowSecret( 索引)检查是否选中行

槽数

自定义单元格渲染( 按列字段命名)

<vue3-datatable :rows="rows" :columns="cols">
    <template #name="{ value }">
        <strong>{{ value.name }}</strong>
    </template>
</vue3-datatable>

插孔箭头插槽

<template #firstArrow> &laquo; </template>
<template #previousArrow> &lsaquo; </template>
<template #nextArrow> &rsaquo; </template>
<template #lastArrow> &raquo; </template>

状态空位

<template #noData>
    <div>No records found.</div>
</template>

服务器模式示例

<vue3-datatable
    :rows="rows"
    :columns="cols"
    :loading="loading"
    :totalRows="totalRows"
    :isServerMode="true"
    :pageSize="10"
    :sortable="true"
    :columnFilter="true"
    @page-change="onPageChange"
    @page-size-change="onPageSizeChange"
    @sort-change="onSortChange"
    @filter-change="onFilterChange"
    @search-change="onSearchChange"
/>

更改日志

更改日志

许可证

@bhplugin/vue3-数据表 是一个开源软件,根据该软件许可 麻省理工学院许可证。 。 。 .

我们的其他插件

角数据表 - @bhplugin/ng-数据表

支助

Buy Me A Coffee

版本与发布记录

@bhplugin/vue3-datatable 共发布 33 个版本,首次发布于 2022/11/13;过去 12 个月发布了 1 个版本。

版本发布日期距今
3.0.0latest2026/04/166 个月前
2.0.22025/03/021.7 年前
2.0.12025/01/301.8 年前
2.0.02024/09/282 年前
1.1.42024/02/082 年前
1.1.32023/11/063 年前

关于 @bhplugin/vue3-datatable 的常见问题

@bhplugin/vue3-datatable 是什么?

Vue3 数据表 - 完全自定义并易于使用数据表库

如何安装 @bhplugin/vue3-datatable?

在项目目录运行 npm install @bhplugin/vue3-datatable,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:vue(>=3.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@bhplugin/vue3-datatable 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@bhplugin/vue3-datatable 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@bhplugin/vue3-datatable 可以商用吗?

@bhplugin/vue3-datatable 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@bhplugin/vue3-datatable 的下载量有多少?

根据 npm 官方下载统计,@bhplugin/vue3-datatable 在 2026/10/08 – 2026/11/06 这 30 天内被下载 16,619 次,日均约 554 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bhplugin/vue3-datatable 还在维护吗?

最新版本 3.0.0 发布于 2026/04/16(6 个月前);至今共发布 33 个版本,其中过去 12 个月发布了 1 个;首次发布于 2022/11/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。