跳到主要内容

页面、表单容器与 CRUD

页面容器、表单弹窗、表格抽象与 CRUD 体系如今都属于 @vef-framework-react/components。它们历史上来自 starter,目前已统一收敛到 components

Page

普通业务页首选容器。

推荐场景:

  • 监控页
  • 配置页
  • 图表看板
  • 左右侧栏布局页

关键 Props:

Prop类型说明
marginboolean是否启用页面外边距
gapLength主区域间距
leftAside / rightAsideReactNode左右侧栏
leftAsideWidth / rightAsideWidthAsideWidth侧栏宽度或可拖拽配置
header / footerReactNode页头页脚
headerPosition / footerPosition"inside" | "outside"内外布局位置
scrollableboolean内容区是否滚动
scrollMarginboolean是否自动给滚动区补边距

相关导出: useViewportHeight

FlexCard

语义化的卡片容器,适合分栏卡片页和树表页。

FormModal

把 Modal 与表单、mutation、提交按钮统一封装在一起。

推荐场景:

  • 小中型新增/编辑弹窗
  • 需要默认 footer 行为的表单弹窗

关键 Props:

Prop类型说明
openboolean是否打开
titleReactNode标题
widthModalProps["width"]宽度
draggableboolean是否支持拖拽
defaultValuesTValues默认值
mutationFnMutationFunction提交时执行的 mutation
renderActions(formApi) => ReactNode自定义底部操作区
beforeSubmit / afterSubmit回调提交前后钩子

FormDrawer

FormModal 语义相同,但承载容器是 Drawer。

FormModal 之外的关键 Props:

Prop类型说明
placementDrawerProps["placement"]打开方向
resizableboolean是否可调整尺寸
widthLength宽度

ProSearch

搜索表单容器,负责基础搜索区、高级搜索区、搜索按钮和重置逻辑。

关键 Props:

Prop类型说明
defaultValuesTValues初始搜索值
basicSearchReactNode基础搜索区域
advancedSearchReactNode高级搜索区域
extraReactNode左侧扩展内容
onSearch(values) => void搜索回调
onReset(defaultValues) => void重置回调
defaultAdvancedSearchVisibleboolean默认展开高级搜索
advancedSearchVisibleboolean受控展开状态

ProTable

页面级表格容器,支持:

  • 查询函数
  • 分页或非分页模式
  • 选中行状态
  • 列显示设置
  • 操作列
  • header / footer 插槽

相关导出:

导出用途
ProTableSubscriber订阅表格内部状态
OperationButtonGroup行级操作按钮组
ParamsWithPagination分页参数类型
ParamsWithSort排序参数类型
RowSelectionConfig选中配置
ProTableRef表格 ref 类型
ProTableState表格内部状态类型

Crud

ProSearchProTable、场景表单和删除 mutation 之上再包一层,提供一整套 CRUD 页面内部状态。

CrudPage

Page + Crud 的组合页,是标准后台列表页首选。

行为说明:

  • delete / deleteMany 成功后,CrudPage 会自动清空内部的选中行状态——依赖 selectedRows 的工具栏按钮会自行重新禁用
  • renderForm(scene, defaults) 以及各场景的 action 渲染器会收到 defaults 参数,里面带着框架默认的 submitButton / resetButton;自定义 action 布局想保留默认按钮时直接用即可

关键 Props:

Prop类型说明
tableColumnsArray<TableColumn<TRow>>表格列
queryFnQueryFunction列表查询
basicSearch / advancedSearchReactNode搜索区域
renderForm(scene) => ReactNode表单场景渲染
formMutationFnsCrudFormMutationFns各场景提交函数
renderFormActionsCrudFormActionsRenderers各场景的可选 action 渲染器,签名为 (formApi, defaults)
deleteMutationFnMutationFunction单条删除
deleteManyMutationFnMutationFunction批量删除
toolbarActionsReactNode工具栏
operationColumnOperationColumnConfig行操作列
sceneDefaultFormValuesPartialDeep<TSceneFormValues>各场景默认值
formMode"modal" | "drawer"表单容器模式
formDrawerConfigCrudFormDrawerConfigdrawer 模式下的额外配置

createCrudKit

把页面的 TRowTSearchValuesTSceneFormValues 泛型固化成一组本地可复用工具。

返回值:

返回值用途
useCrudStore读取当前 CRUD 内部状态
useSearchValues读取当前搜索值
useSelectedRows读取当前选中行
ActionButtonGroup工具栏级按钮组
OperationButtonGroup行操作按钮组

CRUD 类型导出

类型用途
CrudBasicFormScene基础场景字面量("create" | "update"
CrudFormScene场景键类型
CrudBasicSceneFormValues基础场景值映射
CrudFormMutationFns各场景提交函数映射
CrudFormActionsRenderers各场景 action 渲染器映射
CrudFormMode / CrudFormDrawerConfig表单容器模式 / drawer 配置
CrudProps / CrudPagePropsCRUD 组件 Props
CrudKitcreateCrudKit() 返回类型