/* eslint-disable no-param-reassign */ import React, { useState } from 'react'; import ProForm, { ProFormList, ProFormDependency, ProFormSwitch, ProFormText, ProFormSelect, } from '@ant-design/pro-form'; import ProField from '@ant-design/pro-field'; import ProCard from '@ant-design/pro-card'; import { HeartOutlined, HomeOutlined, SettingFilled, SmileOutlined, SyncOutlined, PlusOutlined, DeleteOutlined, CopyOutlined, } from '@ant-design/icons'; const IconMap = { PlusOutlined, HeartOutlined, DeleteOutlined, CopyOutlined, HomeOutlined, SettingFilled, SmileOutlined, SyncOutlined, }; const initialValue = { copyIconProps: { show: true, Icon: 'CopyOutlined', tooltipText: '复制此行', }, deleteIconProps: { show: true, Icon: 'DeleteOutlined', tooltipText: '删除此行', }, creatorButtonProps: { show: true, creatorButtonText: '新建一行', position: 'button', type: 'dashed', icon: 'PlusOutlined', }, }; const Demo = () => { const [stateValue, setStateValue] = useState({}); const [json, setJson] = useState(() => JSON.stringify(initialValue)); return ( { if (values?.creatorButtonProps?.show === false) { values.creatorButtonProps = false; } if (values?.copyIconProps?.show === false) { values.copyIconProps = false; } if (values?.deleteIconProps?.show === false) { values.deleteIconProps = false; } delete values.creatorButtonProps.show; delete values.deleteIconProps.show; delete values.creatorButtonProps.show; setJson(JSON.stringify(values)); if (values?.copyIconProps?.Icon) { values.copyIconProps.Icon = IconMap[values?.copyIconProps?.Icon]; } if (values?.deleteIconProps?.Icon) { values.deleteIconProps.Icon = IconMap[values?.deleteIconProps?.Icon]; } if (values?.creatorButtonProps?.icon) { const Icon = IconMap[values?.creatorButtonProps?.icon]; values.creatorButtonProps.icon = ; } setStateValue(values); }} > } > {({ creatorButtonProps }) => { if (!creatorButtonProps.show) { return null; } return ( { return Object.keys(IconMap).map((value) => { const Icon = IconMap[value]; return { label: , value, }; }); }} /> { return ['bottom', 'top'].map((value) => { return { label: value, value, }; }); }} /> { return ['default', 'primary', 'ghost', 'dashed', 'link', 'text'].map( (value) => { return { label: value, value, }; }, ); }} /> ); }} } > {({ copyIconProps }) => { if (!copyIconProps.show) { return null; } return ( { return Object.keys(IconMap).map((value) => { const Icon = IconMap[value]; return { label: , value, }; }); }} /> ); }} } > {({ deleteIconProps }) => { if (!deleteIconProps.show) { return null; } return ( { return Object.keys(IconMap).map((value) => { const Icon = IconMap[value]; return { label: , value, }; }); }} /> ); }} ); }; export default Demo;