--- 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; ```