UX1 自定义组件的右侧属性区通常由 Option 渲染 DynamicOptionPanel,再由 optionSchema.ts 描述面板结构。配置较少时优先复用现有属性控件,只有现有控件无法表达需求时才开发自定义属性控件。
optionSchema.ts 输出两组扁平列表:
|
字段 |
用途 |
|---|---|
|
|
描述用户看得到的输入项、折叠区和 Tab |
|
|
描述显隐、值联动、父级匹配和向子级同步等逻辑 |
viewList 通过 parentId 组成树:
Root
├── basic-tab
│ └── 基础配置 Collapse / Block / 输入项
├── event-tab
│ └── EventAction
└── style-tab
└── 样式配置 Collapse / Block / 输入项
除根节点外,每个节点都应有正确的 parentId。推荐沿用 basic-tab、event-tab、style-tab,便于不同组件保持一致体验。
节点 id 以 : 开头时,属性控件的值会写入对应路径;不带 : 的 id 只作为结构节点或联动锚点。本节只约定组件自己的业务配置路径:普通配置使用 :config.*,样式配置使用 :configCss.*。
|
写法 |
写入位置 |
常见用途 |
|---|---|---|
|
|
|
标题、开关、数据配置 |
|
|
|
隐藏状态 |
|
|
|
颜色等样式 |
|
|
不写入值 |
折叠区或联动挂载点 |
业务配置路径应与组件实际读取的类型和路径对应。只有需要新实例初始值时,才在 data.json 的 config 或 configCss 中提供默认值;平台级字段及其它特殊路径以当前模板契约为准。
export default {
viewList: [
{
id: 'root',
uxComponentInfo: { name: 'Root', importType: 'custom' },
},
{
id: 'basic-tab',
parentId: 'root',
uxComponentInfo: { name: 'TabPanel', importType: 'custom' },
config: {},
},
{
id: 'base-collapse',
parentId: 'basic-tab',
uxComponentInfo: { name: 'Collapse', importType: 'custom' },
config: { label: '基础' },
},
{
id: ':config.title',
parentId: 'base-collapse',
uxComponentInfo: { name: 'Language', importType: 'custom' },
config: { label: '标题', placeholder: '请输入标题' },
},
],
logicList: [],
};
|
需求 |
优先选择 |
|---|---|
|
单行、多行、数字输入 |
|
|
枚举和布尔值 |
|
|
多语言文案 |
当前辅助工具包注册名为 |
|
颜色、图标、字号和对齐 |
|
|
数据源和字段 |
|
|
事件 |
|
|
边距、边框和圆角 |
|
|
结构 |
|
控件名称和可用参数可能随目标项目版本变化,例如当前辅助工具包使用 Language,旧培训材料使用 LanguageInput。Agent 应以目标版本中的实际注册名为准,不能只按旧示例猜测。
当一个属性控件需要一次输出多个字段时可使用 composeMap,例如同时更新默认值类型、固定值和表达式。映射格式以当前属性控件和辅助工具包示例为准;Edit 或 Use 再从相应业务配置路径读取结果。
|
逻辑 |
适用场景 |
|---|---|
|
|
根据一个配置值显示或隐藏另一项配置 |
|
|
观察配置变化,计算后合并到目标属性控件的配置 |
|
|
组件拖入不允许的父级时删除自身并提示用户 |
|
|
根据父级能力修改属性项的可见性或可用状态 |
|
|
将某项配置同步给符合条件的子代组件 |
联动项通过 parentId 指定作用目标,通过 configObserves 指定观察项。设计时注意:
观察路径必须存在,避免两个联动规则互相写回形成循环。
显隐只影响属性面板显示,不能替代运行态的安全兜底。
checkParent 匹配到非法父级时会删除当前组件并提示用户;提示文案应说明不合法原因或允许放置的位置。
向子代同步前应限定匹配条件,避免修改无关组件。
现有控件不能表达业务配置时,可在组件内部新增属性控件:
使用 PanelComponentBaseProps<Config> 定义输入配置和 onChange。
在 option.tsx 通过 registerComponent 注册。
在 optionSchema.ts 用注册名称引用。
使用业务自己的命名空间,不占用平台保留命名空间。
覆盖初始值、更新、清空、表达式值和残缺配置等场景。
自定义属性控件只服务当前组件时,放在组件内部最容易维护;多个组件共用时,再评估是否沉淀到业务物料工程。
面板层级和三个 Tab 正确,所有非根节点都有有效 parentId。
:config.*、:configCss.* 与组件读取路径一致;需要默认值的字段已在 data.json 对应位置配置。
事件面板只展示已声明事件,联动不会循环或误改其它组件。
新拖入和已有实例、单实例和多实例、空配置和残缺配置都能正常打开。
自定义属性控件已注册,使用业务命名空间,并通过本地和真实页面验证。
回到顶部
咨询热线
