---
order: 3
toc: content
mobile: false
group:
title: 高级用法
order: 1
---
# path 书写
调用 setSchemaByPath 时,需要根据 path 改动表单元素的 schema。如果元素结构很深,如何正确书写 path 呢?
## 基础型:path
设置选项:form.setSchemaByPath('radio', { enum: [1, 2, 3] });
```jsx
import { Button } from 'antd';
import FormRender, { useForm } from 'form-render';
import React from 'react';
const Demo = () => {
const form = useForm();
const onMount = () => {
setTimeout(() => {
form.setSchemaByPath('radio', { enum: [1, 2, 3] });
}, 1000);
};
const schema = {
type: 'object',
displayType: 'row',
properties: {
radio : {
title: '选择框',
type: 'string',
widget: 'radio',
enum: []
}
}
};
return (
);
};
export default Demo;
```
## 嵌套型:path
设置选项:form.setSchemaByPath('x.radio', { enum: [1, 2, 3] });
```jsx
import { Button } from 'antd';
import FormRender, { useForm } from 'form-render';
import React from 'react';
const Demo = () => {
const form = useForm();
const schema = {
type: 'object',
displayType: 'row',
properties: {
x: {
type: 'object',
title: 'xxx',
properties: {
radio: {
title: '选择框',
type: 'string',
widget: 'radio',
enum: []
}
}
}
}
};
const onMount = () => {
setTimeout(() => {
form.setSchemaByPath('x.radio', { enum: [1, 2, 3] });
}, 1000);
};
return (
);
};
export default Demo;
```
## 列表型:path
设置选项:form.setSchemaByPath('x[].radio', { enum: [1, 2, 3] });
```jsx
import { Button } from 'antd';
import FormRender, { useForm } from 'form-render';
import React from 'react';
const Demo = () => {
const form = useForm();
const schema = {
type: 'object',
displayType: 'row',
properties: {
x: {
title: '对象数组',
type: 'array',
default: [{}],
items: {
type: 'object',
properties: {
radio : {
title: '选择框',
type: 'string',
widget: 'radio',
enum: []
}
}
}
}
}
};
const onMount = () => {
setTimeout(() => {
form.setSchemaByPath('x[].radio', { enum: [1, 2, 3] });
}, 1000);
};
return (
);
};
export default Demo;
```
## 复杂嵌套:path
设置选项:form.setSchemaByPath('x.y[].radio', { enum: [1, 2, 3] });
```jsx
import { Button } from 'antd';
import FormRender, { useForm } from 'form-render';
import React from 'react';
const Demo = () => {
const form = useForm();
const schema = {
type: 'object',
displayType: 'row',
properties: {
select1: {
title: '输入框 A',
type: 'string',
},
select2: {
title: '输入框 B',
type: 'string',
},
x: {
type: 'object',
title: '复杂型',
widget: 'lineTitle',
properties: {
y: {
title: '对象数组',
type: 'array',
display: 'inline',
default: [{}],
items: {
type: 'object',
title: '基础信息',
properties: {
radio : {
title: '选择框',
type: 'string',
widget: 'radio',
enum: []
}
}
}
}
}
}
}
};
const onMount = () => {
setTimeout(() => {
form.setSchemaByPath('x.y[].radio', { enum: [1, 2, 3] });
}, 1000);
};
return (
);
};
export default Demo;
```