---
group:
title: Client
order: 1
---
# SchemaComponent
## Components
### SchemaComponentProvider
```tsx | pure
```
### SchemaComponentOptions
提供 SchemaComponent 所需的 scope 和 components,可以嵌套,当 `inherit={true}` 时,继承父级的 scope 和 components。
```tsx | pure
{/* 继承父级的 scope 和 components */}
```
例如将 useTranslation 的 t 附加给 scope
```tsx | pure
import { useTranslation } from 'react-i18next';
function TranslationProvider(props) {
const { t } = useTranslation();
return (
{ props.children }
);
}
```
### SchemaComponent
## Hooks
### useSchemaComponentContext()
获取 SchemaComponent 的上下文
```ts
const { refresh, reset } = useSchemaComponentContext();
```
### useDesignable()
获取当前 schema 节点设计器的 API
```ts
const {
designable, // 是否可以配置
patch, // 更新当前节点配置
remove, // 移除当前节点
insertAdjacent, // 在某位置插入,四个位置:beforeBegin、afterBegin、beforeEnd、afterEnd
insertBeforeBegin, // 在当前节点的前面插入
insertAfterBegin, // 在当前节点的第一个子节点前面插入
insertBeforeEnd, // 在当前节点的最后一个子节点后面
insertAfterEnd, // 在当前节点的后面
} = useDesignable();
const schema = {
name: uid(),
'x-component': 'Hello',
};
// 在当前节点的前面插入
insertBeforeBegin(schema);
// 等同于
insertAdjacent('beforeBegin', schema);
// 在当前节点的第一个子节点前面插入
insertAfterBegin(schema);
// 等同于
insertAdjacent('afterBegin', schema);
// 在当前节点的最后一个子节点后面
insertBeforeEnd(schema);
// 等同于
insertAdjacent('beforeEnd', schema);
// 在当前节点的后面
insertAfterEnd(schema);
// 等同于
insertAdjacent('afterEnd', schema);
```
几个插入的位置:
```ts
{
properties: {
// beforeBegin 在当前节点的前面插入
node1: {
properties: {
// afterBegin 在当前节点的第一个子节点前面插入
// ...
// beforeEnd 在当前节点的最后一个子节点后面
},
},
// afterEnd 在当前节点的后面
},
}
```
## 扩展的 Formily Schema 属性
- `x-uid` 可缺失,前端无感。主要用于插件 `plugin-ui-schema-storage`,用于后端 schema 的增删改查
- `x-designer` schema 设计器
- `x-initializer` schema 初始化器
- `x-collection-field` 用来标记 [CollectionField](collection-manager#collectionfield)
- `x-action` 用来标记 [Action](schema-components/action)
- `x-align` ActionBar 里用于 action 的布局,包括 `left` 和 `right`
## Examples
拖拽
可以切换 designable 状态
不可以切换 designable 状态
不可以切换 designable 状态