UI Schema
UI Schema 是 NocoBase 用来描述前端组件的协议,基于 Formily Schema 2.0,类 JSON Schema 风格。在 FlowEngine 中,registerFlow 的 uiSchema 字段就是用这个语法来定义配置面板的 UI。
基本用法
最简单的组件
所有的原生 HTML 标签都可以转为 schema 写法:
等同于 JSX:
子组件
children 组件写在 properties 里:
等同于 JSX:
属性说明
type
节点的类型:
name
schema 名称。子节点的 name 就是 properties 的 key:
title
节点标题,通常用于表单字段的标签。
x-component
组件名称。可以是原生 HTML 标签,也可以是注册的 React 组件:
x-component-props
组件属性:
x-decorator
包装器组件。x-decorator + x-component 的组合,可以将两个组件放在一个 schema 节点里——降低结构复杂度,提高复用率。
比如表单场景里,FormItem 就是 decorator:
等同于 JSX:
x-display
组件的展示状态:
x-pattern
字段组件的交互模式:
在 registerFlow 中使用
在插件开发中,uiSchema 主要用在 registerFlow 的配置面板里。每个字段通常用 'x-decorator': 'FormItem' 包裹:
提示
v2 对 uiSchema 语法是兼容的,不过使用场景有限——主要用在 Flow 的配置面板中描述表单 UI。大部分运行时的组件渲染推荐直接用 Antd 组件 实现。
常用组件速查
相关链接
- FlowEngine 概述(插件开发) — registerFlow 中 uiSchema 的实际用法
- FlowDefinition 流定义 — registerFlow 的完整参数说明
- Formily Schema 文档 — uiSchema 底层基于的 Formily 协议

