import styles from "./index.less"; import React, { useState, useEffect, useRef } from "react"; import { Form, Input, InputNumber, Modal, Button, Avatar, Typography, } from "antd"; import { SmileOutlined, UserOutlined } from "@ant-design/icons"; const layout = { labelCol: { span: 8 }, wrapperCol: { span: 16 }, }; const tailLayout = { wrapperCol: { offset: 8, span: 16 }, }; interface ModalFormProps { visible: boolean; onCancel: () => void; } const ModalForm: React.FC = ({ visible, onCancel }) => { const [form] = Form.useForm(); const prevVisibleRef = useRef(); useEffect(() => { prevVisibleRef.current = visible; }, [visible]); const prevVisible = prevVisibleRef.current; useEffect(() => { console.log(visible, prevVisible); if (!visible && prevVisible) { form.resetFields(); } }, [visible]); const onOk = () => { form.submit(); }; return (
); }; const Demo = () => { const [visible, setVisible] = useState(false); const showUserModal = () => { setVisible(true); }; const hideUserModal = () => { setVisible(false); }; const onFinish = (values) => { console.log("Finish:", values); }; return (
{ if (name === "userForm") { const { basicForm } = forms; const users = basicForm.getFieldValue("users") || []; basicForm.setFieldsValue({ users: [...users, values] }); setVisible(false); } }} >
prevValues.users !== curValues.users } > {({ getFieldValue }) => { const users = getFieldValue("users") || []; return users.length ? (
    {users.map((user, index) => (
  • } /> {user.name} - {user.age}
  • ))}
) : ( ( No user yet. ) ); }}
); }; export default () => (
);