import { forwardRef, useImperativeHandle, useState } from 'react'; import { Form, Input, InputNumber, Checkbox } from 'antd'; import { useTranslation } from 'react-i18next'; import type { StartVariableItem, VariableEditModalRef } from '../../types' import RbModal from '@/components/RbModal' interface VariableEditModalProps { refresh: (values: StartVariableItem[]) => void; variables: StartVariableItem[] } const VariableConfigModal = forwardRef(({ refresh, }, ref) => { const { t } = useTranslation(); const [visible, setVisible] = useState(false); const [form] = Form.useForm<{variables: StartVariableItem[]}>(); const [loading, setLoading] = useState(false) const [initialValues, setInitialValues] = useState([]) // 封装取消方法,添加关闭弹窗逻辑 const handleClose = () => { setVisible(false); form.resetFields(); setLoading(false) }; const handleOpen = (values: StartVariableItem[]) => { setVisible(true); form.setFieldsValue({variables: values}) setInitialValues([...values]) }; // 封装保存方法,添加提交逻辑 const handleSave = () => { form.validateFields().then((values) => { refresh([ ...(values?.variables ?? []), ]) handleClose() }) } // 暴露给父组件的方法 useImperativeHandle(ref, () => ({ handleOpen, handleClose })); return (
{(fields) => ( <> {fields.map(({ name }, index) => { const field = initialValues[index] return ( { field.type === 'string' && } { field.type === 'number' && } { field.type === 'boolean' && {`${field.name}·${field.description}`} } ) })} )}
); }); export default VariableConfigModal;