优化FormItemsRenderer

master
LiuJiaNan 2026-02-09 14:51:40 +08:00
parent 05232aa88d
commit 5eadb56698
1 changed files with 13 additions and 12 deletions

View File

@ -230,6 +230,15 @@ const FormItemsRenderer = ({
: (listOptions ?? []); : (listOptions ?? []);
}; };
// 获取可选项的属性(适用于 SELECT、RADIO、CHECKBOX
const getSelectableItemAttributes = (item, itemsFieldKey) => {
const value = item[itemsFieldKey.valueKey];
const label = typeof itemsFieldKey.labelKey === "function" ? itemsFieldKey.labelKey(item) : item[itemsFieldKey.labelKey];
const disabled = item.disabled;
return { value, label, disabled };
};
// 渲染表单控件 // 渲染表单控件
const renderFormControl = (option) => { const renderFormControl = (option) => {
const componentProps = getComponentProps(option); const componentProps = getComponentProps(option);
@ -253,9 +262,7 @@ const FormItemsRenderer = ({
return ( return (
<Select placeholder={placeholder} showSearch allowClear optionFilterProp="children" {...componentProps}> <Select placeholder={placeholder} showSearch allowClear optionFilterProp="children" {...componentProps}>
{(option.items || []).map((item) => { {(option.items || []).map((item) => {
const value = item[itemsFieldKey.valueKey]; const { value, label, disabled } = getSelectableItemAttributes(item, itemsFieldKey);
const label = typeof itemsFieldKey.labelKey === "function" ? itemsFieldKey.labelKey(item) : (item[itemsFieldKey.labelKey]);
const disabled = item.disabled;
return ( return (
<Select.Option key={value} value={value} disabled={disabled}> <Select.Option key={value} value={value} disabled={disabled}>
{label} {label}
@ -269,9 +276,7 @@ const FormItemsRenderer = ({
return ( return (
<Radio.Group {...componentProps}> <Radio.Group {...componentProps}>
{(option.items || []).map((item) => { {(option.items || []).map((item) => {
const value = item[itemsFieldKey.valueKey]; const { value, label, disabled } = getSelectableItemAttributes(item, itemsFieldKey);
const label = typeof itemsFieldKey.labelKey === "function" ? itemsFieldKey.labelKey(item) : (item[itemsFieldKey.labelKey]);
const disabled = item.disabled;
return ( return (
<Radio key={value} value={value} disabled={disabled}> <Radio key={value} value={value} disabled={disabled}>
{label} {label}
@ -289,9 +294,7 @@ const FormItemsRenderer = ({
? ( ? (
<Row> <Row>
{(option.items || []).map((item) => { {(option.items || []).map((item) => {
const value = item[itemsFieldKey.valueKey]; const { value, label, disabled } = getSelectableItemAttributes(item, itemsFieldKey);
const label = typeof itemsFieldKey.labelKey === "function" ? itemsFieldKey.labelKey(item) : (item[itemsFieldKey.labelKey]);
const disabled = item.disabled;
return ( return (
<Col span={option.checkboxCol} key={value}> <Col span={option.checkboxCol} key={value}>
<Checkbox value={value} disabled={disabled}> <Checkbox value={value} disabled={disabled}>
@ -304,9 +307,7 @@ const FormItemsRenderer = ({
) )
: ( : (
(option.items || []).map((item) => { (option.items || []).map((item) => {
const value = item[itemsFieldKey.valueKey]; const { value, label, disabled } = getSelectableItemAttributes(item, itemsFieldKey);
const label = typeof itemsFieldKey.labelKey === "function" ? itemsFieldKey.labelKey(item) : (item[itemsFieldKey.labelKey]);
const disabled = item.disabled;
return ( return (
<Checkbox key={value} value={value} disabled={disabled}> <Checkbox key={value} value={value} disabled={disabled}>
{label} {label}