该组件是一个通用的 CRUD 表格组件,支持远程分页、本地分页、查询、重置、选中行等功能,通过插槽机制提供高度可定制性。
<template>
部分解析v-bind="$attrs"
将父组件传递的所有未被显式声明的属性绑定到根元素上。class
、style
等属性。v-if="$slots.queryBar"
:只有当父组件提供了 queryBar
插槽时才渲染此部分。@search="handleSearch"
和 @reset="handleReset"
是从子组件 QueryBar
向上传递事件的方法。<slot name="queryBar" />
:用户自定义的查询表单项。n-data-table
组件。remote
:是否启用远程分页。loading
:控制加载状态。columns
:表格列配置。data
:当前显示的数据。scroll-x
:横向滚动宽度。row-key
:用于标识每一行的唯一 key,默认是 id。pagination
:分页配置对象。@update:checked-row-keys="onChecked"
:当勾选行变化时触发。@update:page="onPageChange"
:当页码变化时触发。<script setup>
部分详解Prop 名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
remote |
Boolean | true |
是否后端分页 |
isPagination |
Boolean | true |
是否启用分页 |
scrollX |
Number | 450 |
表格横向滚动宽度 |
rowKey |
String | 'id' |
行唯一标识字段 |
columns |
Array | —— | 表格列配置 |
queryItems |
Object | {} |
查询条件 |
extraParams |
Object | {} |
额外参数 |
getData |
Function | —— | 获取数据的函数 |
update:queryItems
:用于更新查询条件。onChecked
:行选中事件。onDataChange
:数据变化通知。loading
:控制表格加载状态。initQuery
:保存初始查询条件,用于重置。tableData
:当前展示的数据。pagination
:分页配置对象,包含页码、每页条数等信息。handleQuery
props.getData
获取数据,并处理分页参数。page
和 page_size
。handleSearch
:重置页码为 1 并重新查询。handleReset
:将所有查询条件设为 null
,恢复初始值并重新查询。type: 'selection'
时才触发行选中事件。ref
访问这些方法或数据。这个组件是一个典型的 Vue 3 Composition API 实践:
defineEmits
定义接口;ref
和 reactive
创建响应式状态;async/await
处理异步请求;defineExpose
暴露内部方法;