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