react antd From 表单 提交(用modal对话的按钮提交from表单每一项)

react antd From 表单 提交

场景:用modal对话的按钮提交from表单每一项

在这里插入图片描述

import { Button, Modal, Form, Input, DatePicker, Select, Col, Row, Popconfirm, Table } from 'antd';
//useRef 使用useRef
import { useEffect, useState, useRef } from 'react';
import type { SelectProps } from 'antd';
import type { ColumnsType } from 'antd/es/table';
import { EditOutlined, DeleteOutlined, VerticalAlignTopOutlined, VerticalAlignBottomOutlined } from '@ant-design/icons';





function detailsDialog(props: any) {
  const [isModalOpen, setIsModalOpen] = useState(false);//弹窗显示隐藏
  const [componentDisabled, setComponentDisabled] = useState<boolean>(true);//表单禁用
  const fromRef = useRef<any>()//*************************************
  //点击确定
  const handleOk = (value:any) => {
    fromRef.current?.submit()//*************************************
    setIsModalOpen(false);
  };
  //点击取消
  const handleCancel = () => {
    props.closeDetail()
  };



  return (
    <>
      <Modal
        title='处方详情'
        maskClosable={false}
        width={1000}
        open={props.mode}
        onCancel={handleCancel}
        onOk={handleOk}
      >
        </div>
        <Form
          ref={fromRef}
          labelCol={{ span: 4 }}
          onFinish={(v:any)=>{
            console.log(454,v)
          }}//*************************************
          wrapperCol={{ span: 18 }}
          disabled={componentDisabled}
        >
          <Row>
            <Col span={12}>
              <Form.Item
                label="名称"
                name="name"
                rules={[{ required: true, message: '请输入' }]}
              >
                <Input placeholder="请输入" />
              </Form.Item>
            </Col>
            <Col span={12}>
              <Form.Item
                label="开方日期"
                name="data"
                rules={[{ required: true, message: '请输入' }]}
              >
                <DatePicker style={{ width: '100%' }} />
              </Form.Item>
            </Col>
          </Row>
        </Form>
      </Modal>
    </>
  );
}

export default detailsDialog;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React Antd中,可以使用`form`属性将`Modal`组件中的表单与父组件进行关联,然后在`Modal`中的确认按钮上通过`form.submit()`方法来获取表单数据。 具体实现步骤如下: 1. 在`Modal`组件中添加`form`属性,使表单与父组件进行关联: ```jsx import { Form, Input, Modal } from 'antd'; const MyModal = ({ visible, onCancel, onOk, form }) => { const { getFieldDecorator } = form; return ( <Modal visible={visible} onCancel={onCancel} onOk={onOk} > <Form> <Form.Item label="Username"> {getFieldDecorator('username', { rules: [{ required: true, message: 'Please input your username!' }], })(<Input />)} </Form.Item> <Form.Item label="Password"> {getFieldDecorator('password', { rules: [{ required: true, message: 'Please input your password!' }], })(<Input.Password />)} </Form.Item> </Form> </Modal> ); }; export default Form.create()(MyModal); ``` 2. 在`Modal`组件中的确认按钮上通过`form.submit()`方法来获取表单数据: ```jsx import { Form } from 'antd'; import MyModal from './MyModal'; const MyParentComponent = () => { const handleSubmit = (e) => { e.preventDefault(); const { form } = myFormRef.current; form.validateFields((err, values) => { if (!err) { console.log(values); // 输出表单数据 form.resetFields(); } }); }; const myFormRef = useRef(null); return ( <div> <button onClick={() => myModalRef.current.showModal()}>Open Modal</button> <MyModal wrappedComponentRef={(form) => myFormRef.current = form} visible={visible} onCancel={() => setVisible(false)} onOk={handleSubmit} /> </div> ); }; export default MyParentComponent; ``` 在上面的代码中,我们通过`form.validateFields(callback)`方法来校验表单数据,并且如果校验通过,就可以通过`values`参数获取到表单数据。同时,我们也可以通过`form.resetFields()`方法来重置表单数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值