--- title: 概述 order: 0 nav: title: 组件 order: 4 --- # 组件 NocoBase 的客户端组件总共有三类: - 通过 createRouteSwitch 创建的路由组件,如 Layou、Page - 通过 createCollectionField 创建的字段组件,用于扩展字段 - 通过 createSchemaComponent 创建的 JSON Schema 组件,可以是任意东西,比如表格、表单、日历、看板等。 Schema Component 可用于 Route Component 或 Collection Field 中。 ## 路由组件 ```js function Hello() { return
{...properties}
DesignableBar 可以用于修改当前 SchemaComponent 的 Schema。可以以任意形态出现,例如:
function DesignableBar() {
// 这里是随意写的,当前 schema,可以 update,remove 等等
const { schema, update, remove } = useDesignableSchema();
return (
配置项1
配置项2
配置项3
}>
配置
配置
配置
)
}
如果 DesignableBar 只是修改当前层级的参数比较好处理,但是如果修改的是 properties 子节点里的参数,情况会变得比较复杂。
## 字段组件
```ts
const string: FieldOptions = {
name: 'string',
type: 'object',
group: 'basic',
order: 1,
title: '单行文本',
sortable: true,
default: {
interface: 'string',
dataType: 'string',
// name,
uiSchema: {
type: 'string',
// title,
'x-component': 'Input',
'x-decorator': 'FormItem',
'x-designable-bar': 'Input.DesignableBar',
},
},
properties: {
},
operations: [
{ label: '包含', value: '$includes', selected: true },
{ label: '不包含', value: '$notIncludes' },
{ label: '等于', value: 'eq' },
{ label: '不等于', value: 'ne' },
{ label: '非空', value: '$notNull', noValue: true },
{ label: '为空', value: '$null', noValue: true },
],
designableBar: {
key1: {},
key2: {},
},
};
const CollectionField = createCollectionField({
interfaces: {
string,
},
})
```