优化FormItemsRenderer

master
LiuJiaNan 2025-10-30 16:47:59 +08:00
parent 04dcbd202f
commit 983ca08106
1 changed files with 49 additions and 50 deletions

View File

@ -21,13 +21,13 @@ const { RangePicker } = DatePicker;
* 表单项渲染器组件 * 表单项渲染器组件
*/ */
const FormItemsRenderer = ({ const FormItemsRenderer = ({
options, options,
labelCol, labelCol,
span = 12, span = 12,
collapse = false, collapse = false,
useAutoGenerateRequired = true, useAutoGenerateRequired = true,
initialValues, initialValues,
}) => { }) => {
const form = Form.useFormInstance(); const form = Form.useFormInstance();
// 获取表单值,优先使用 initialValues // 获取表单值,优先使用 initialValues
@ -297,40 +297,39 @@ const FormItemsRenderer = ({
return ( return (
option.customizeRender option.customizeRender
? (renderFormControl(option)) ? (renderFormControl(option))
: (() => { : (
// 支持动态计算 hidden <Form.Item
const hidden = typeof option.hidden === "function" key={option.name || index}
? option.hidden(getFormValues()) noStyle
: (option.hidden ?? false); shouldUpdate={option.shouldUpdate ?? option?.componentProps?.shouldUpdate}
dependencies={option.dependencies || option?.componentProps?.dependencies}
>
{() => {
// 支持动态计算 hidden
const hidden = typeof option.hidden === "function"
? option.hidden(getFormValues())
: (option.hidden ?? false);
if (hidden) if (hidden)
return null; return null;
return ( return (
<Col key={option.name || index} span={itemSpan} style={style}> <Col key={option.name || index} span={itemSpan} style={style}>
<Form.Item <Form.Item
noStyle name={option.name}
shouldUpdate={option.shouldUpdate ?? option?.componentProps?.shouldUpdate} label={renderLabel(option)}
dependencies={option.dependencies || option?.componentProps?.dependencies} rules={getRules(option)}
> labelCol={itemLabelCol}
{() => { wrapperCol={itemWrapperCol}
return ( {...getFormItemProps(option)}
<Form.Item >
name={option.name} {renderFormControl(option)}
label={renderLabel(option)} </Form.Item>
rules={getRules(option)} </Col>
labelCol={itemLabelCol} );
wrapperCol={itemWrapperCol} }}
{...getFormItemProps(option)} </Form.Item>
> )
{renderFormControl(option)}
</Form.Item>
);
}}
</Form.Item>
</Col>
);
})()
); );
} }
@ -349,17 +348,17 @@ const FormItemsRenderer = ({
option.customizeRender option.customizeRender
? (renderFormControl(option)) ? (renderFormControl(option))
: ( : (
<Form.Item <Form.Item
name={option.name} name={option.name}
label={renderLabel(option)} label={renderLabel(option)}
rules={getRules(option)} rules={getRules(option)}
labelCol={itemLabelCol} labelCol={itemLabelCol}
wrapperCol={itemWrapperCol} wrapperCol={itemWrapperCol}
{...getFormItemProps(option)} {...getFormItemProps(option)}
> >
{renderFormControl(option)} {renderFormControl(option)}
</Form.Item> </Form.Item>
) )
} }
</Col> </Col>
); );