优化FormItemsRenderer
parent
05232aa88d
commit
5eadb56698
|
|
@ -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}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue