antd-curd
antd-curd copied to clipboard
📦 基于 ant design 、 dva 、 antd-form-mate 的增删改查页面组件。
antd-curd
基于 ant design 、 dva、 antd-form-mate 的增删改查页面组件。
由于没有打包发布的经验,所以在 2.0.0 之前的版本除了一些未知的 bug 外,可能会存在一些兼容性问题。此次重构到 2.0.0 后,移除了依赖 antd-form-mate 。后续发包当慎重起见。
结合 dva 的使用说明
组件内部调用以下 effect 函数:
fetch获取数据列表detail获取对象详情create创建对象update更新对象delete删除对象
以下 reducer 函数:
_saveDetail关闭弹窗时,清空对象详情
并注入以下数据字段:
data形如{ list: any[], pagination: any }, 分页器属性参考Pagination组件detail[可选]对象详情字段
基于此封装了 dva-base-models,配置相关请求函数即可使用。参考 Demo 。
关于表单
通过 ConfigProvider 组件配置 createFormItemsFn ,组件内部关于创建表单的地方都会调用该方法,可直接从 antd-form-mate 导出 createFormItems 传入即可。
StandardTable
基于 ant-deisgn-pro-v2 中的 StandardTable 组件。
- 默认开启
hideOnSinglePage - 间隔行着色
- 多选功能可选,通过
checkable控制
StandardList
与 StandardTable 类似,只是将容器从 Table 替换为 List ,并自定义组件(比如 Card )渲染每条记录。支持多选。
API
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
renderItem |
用于自定义渲染组件 | ({ record, actions, recordSelection, checkable }) => React.ReactNode |
- |
DetailDrawer 详情抽屉
基于 antd-form-mate 实现的详情表单抽屉,参数定义可参见 DetailFormDrawer/index.tsx 。开启防抖。
DetailModal 详情模态框
基于 antd-form-mate 实现的详情模态框,参数定义可参见 DetailFormModal/index.tsx 。开启防抖。
QueryPanel 查询面板

基于 antd-form-mate 实现的查询面板组件,具体实现可参考 QueryPanel/index.tsx ,只需传入表单配置和 onSearch 方法即可使用。同时提供了重置表单后的 onReset 函数。
Curd
为包含在 Curd 中的子组件注入 __curd__ 的实例属性
state 中保存了当前页面的查询参数:
searchForm表单数据searchParams分页器,过滤器,排序器参数
还有一个 handleSearch 方法可供直接( innerRef )调起当前页面数据查询接口以供刷新数据使用。
API
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
modelName |
dva 中 model 的名称空间 | string |
- |
data |
对象分页数据 | { list: T[]; pagination?: any } |
- |
dipatch |
dva 注入的 dispatch 函数 | Function |
- |
wrapper |
组件被包裹的容器,默认为无边框 Card |
React.ComponentClass | null |
- |
createFormItemsFn |
创建表单项的函数 | (form: WrappedFormUtils) => (itemsConfig: ItemConfig[], formLayout?: Layout) => JSX.Element[] |
() => () => ([]) |
Curd.Query
查询面板组件。
通过 __curd__ 实例属性为 Curd 组件更新 searchForm 。
如果需要主动为 Curd.Query 组件的表单赋值,通过 ref 方法拿到 Curd.Query 的实例,再通过 ref.form 拿到表单对象即可。
另外,如果需要外部直接调起新的搜索,可通过 ref 拿到对象实例后调用 setFieldsValueAndSearch 并传入查询表单即可调起搜索,自动清空未输入的值。
API
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
queryArgsConfig |
查询参数配置,参考 index.js | any[] |
[] |
CurdBox
为包含在 CurdBox 中的子组件注入 __curdBox__ 的实例属性
通过 __curd__ 实例属性为 Curd 组件更新 searchParams 。
增删改查容器,为子组件提供对象相关详情的展示和编辑弹窗,以及对象操作相关的增删改等操作( Actions )。
API
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
createTitle |
新建窗口名称 | string |
'新建对象' |
detailTitle |
详情窗口名称 | string |
'对象详情' |
updateTitle |
编辑窗口名称 | string |
'编辑对象' |
fetchLoading |
请求列表 loading | boolean |
- |
createLoading |
创建 model loading | boolean |
- |
detailLoading |
请求 model 详情 loading | boolean |
- |
updateLoading |
更新 model loading | boolean |
- |
deleteLoading |
删除 model loading | boolean |
- |
createButtonName |
新建按钮名称,为空时隐藏按钮 | string | false |
'新建' |
popup |
弹窗类型 | 'modal' | 'drawer' |
- |
popupProps |
弹窗配置,根据 popup 配置 |
CustomDetailFormDrawerProps | CustomDetailFormModalProps | - |
setFormItemsConfig |
配置表单数据 | (detail: {}, mode: 'create' | 'detail' | 'update', form) => any[] |
- |
afterPopupClose |
关闭弹窗后回调函数 | () => void |
- |
interceptors |
拦截器 | interceptors | - |
detail |
model 详情 | any |
- |
actionsConfig |
表格配置 | [actionsConfig](#actionsConfig) | false | null |
- |
showOperators |
是否展示操作栏 | boolean |
- |
extraOperators |
扩展类似新增按钮的操作栏 | JSX.Element[] |
- |
dipatch |
dva 注入的 dispatch 函数 | Function |
- |
autoFetch |
渲染后是否自动发起请求,如果需要配置额外的查询参数,可置为 false 手动自定义发起初始化请求 | boolean |
true |
reSearchAfterUpdate |
更新 model 是否自动刷新列表 | boolean |
false |
__curd__ |
控制 Curd 相关属性 | Curd 实例 | - |
interceptors
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
updateFieldsValue |
表单数据拦截处理,类似时间区间这样的数据,需要单独处理后再提交 | (fieldsValue: any, mode?: 'create' | 'update') => any |
- |
handleCreateClick |
新建点击事件拦截 | () => boolean | undefined |
- |
handleDetailClick |
详情点击事件拦截,可通过路由跳转到自定义的对象详情页面 | (record: any) => boolean | undefined |
- |
handleUpdateClick |
编辑点击事件拦截 | (record: any) => boolean | undefined |
- |
handleDeleteClick |
删除点击事件拦截 | (record: any) => void |
- |
handleFilterAndSort |
过滤器和排序器处理,可用于使过滤器和分页器受控 | (filtersArg: Record<keyof any, string[]>, sorter: SorterResult<any>, extra?: TableCurrentDataSource<any>) => any |
- |
actionsConfig
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
showActionsCount |
除更多外需要展示的操作个数 | number |
3 |
extraActions |
除 详情(4),编辑(8),删除(12) 外,可自行配置额外操作。注意,数字是操作的 key ,根据 key 不同,会按升序排列 |
ActionType | - |
confirmKeys |
需要弹出确认窗口的 key 数组 |
(number | [number, (record?: any) => string])[] |
[12] |
confirmProps |
额外的 Popconfirm 配置 | PopconfirmProps |
- |
hideActions |
隐藏操作的 key 数组 |
number[] | ((record?: any) => void | number[]) |
- |
disabledActions |
禁用操作的 key 数组 |
(record?: any) => void | number[] |
- |
detailActionTitle |
详情 action 名称 | string |
'详情' |
updateActionTitle |
编辑 action 名称 | string |
'编辑' |
deleteActionTitle |
删除 action 名称 | string |
'删除' |
注意事项
handle**Click事件(除handleDeleteClick事件外,handleDeleteClick直接中断)默认不会中断后续流程,如果需要中断,return true即可。- 如果对象详情不需要再请求接口,不注入
detail或者detailLoading即可。
Curd.Table

由 CurdBox 封装 StandardTable 而成。
Curd.List

由 CurdBox 封装 StandardList 而成。
Demo