跳到主要内容

页面、布局与表单容器

注意(v2.1.6): PageFlexCardFormModalFormDrawer 已迁移到 @vef-framework-react/components,请从那里导入。

App

应用根组件。负责串起:

  • AppContextProvider
  • ApiClientProvider
  • MotionProvider
  • ThemeConfigProvider
  • RouterProvider

你通常不直接手写它,而是通过 createApp().render() 使用。

Page

普通业务页首选容器。

推荐场景:

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

关键 Props:

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

FlexCard

本质上是 CardProps 的语义化导出,适合分栏卡片页和树表页。

BaseLayout / Layout

应用壳层布局组件。通常由布局路由驱动,不建议在普通业务页手工直接重组。

RouterProvider

把 router 和扩展上下文注入 React 树。
如果使用 createApp(),通常也不需要单独手动挂它。

ThemeConfigProvider

starter 对应用主题层的进一步封装,通常和 App 一起工作。

Login

框架内置登录页组件。

推荐场景:

  • 标准后台登录页
  • 不想自行重复搭登录表单和跳转逻辑

关键 Props:

Prop类型说明
logoReactNode左上角品牌图形
titlestring登录页标题
descriptionstring副标题
publicKeystring开启 RSA 加密时使用
onLogin(params: LoginParams) => Promise<LoginResult>登录回调

FormModal

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

推荐场景:

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

关键 Props:

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

FormDrawer

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

推荐场景:

  • 长表单
  • 需要更大横向空间
  • 不想遮挡原页面上下文

关键 Props:

Prop类型说明
openboolean是否打开
titleReactNode标题
placementDrawerProps["placement"]打开方向
resizableboolean是否可调整尺寸
widthLength宽度
其余表单相关FormModal 类似提交、重置、钩子一致

其它页面级组件

导出用途
AccessDenied无权限页
Error路由错误页
NotFound404 页
LogoIcon框架风格 Logo 图形
nProgressEventEmitter路由进度条事件
useViewportHeight页面内部读取视口高度