import { Form, Input, InputRef } from "antd"; import React, { useEffect, useRef, useState } from "react" interface Props { title: string, dataIndex: string record: any; handleSave: (data: any) => void isNum?: boolean } const InputUpdate: React.FC = ({ title, dataIndex, record, handleSave, isNum }) => { const [form] = Form.useForm(); const [editing, setEditing] = useState(false); const inputRef = useRef(null); useEffect(() => { if (editing) { inputRef.current!.focus({ cursor: 'all' }); } }, [editing]); const toggleEdit = () => { setEditing(!editing); form.setFieldsValue({ [dataIndex]: record[dataIndex] }); }; const save = async () => { try { const values = await form.validateFields(); if (values?.[dataIndex] !== (record as any)?.[dataIndex]) { handleSave({ ...record, ...values }); } toggleEdit(); } catch (errInfo) { console.log('Save failed:', errInfo); } }; let childNode = editing ? (
= 0) { return Promise.resolve() } else { return Promise.reject() } } }, } ]} >
) : ( {title} ) return childNode; } export default React.memo(InputUpdate)