antd-design的modal结合form表单传值

import React, { useState, useRef } from "react";
import "antd/dist/antd.css";
import "./index.css";
import { Button, Modal, Form, Input, Select } from "antd";
const { Option } = Select;
const App: React.FC = () => {
  const [isModalOpen, setIsModalOpen] = useState(false);
  const form = useRef();
  const userInfo = { idCard: "340202197104106891", earthday: "1971" };
  const showModal = () => {
    setIsModalOpen(true);
  };
  const goods = [
    { name: "笔记本", price: "8000" },
    { name: "铅笔", price: "2" },
    { name: "笔筒", price: "4" }
  ];

  const handleOk = () => {
    // setIsModalOpen(false);
    // console.log(form.current.submit());
    console.log(form.current.getFieldsValue());
  };

  const handleCancel = () => {
    setIsModalOpen(false);
  };
  const onFinish = (values: any) => {
    console.log("Success:", values);
  };

  const onFinishFailed = (errorInfo: any) => {
    console.log("Failed:", errorInfo);
  };
  const handleChange = (value: string,evt) => {
    console.log(evt);
    form.current.setFieldsValue({'price': evt.value})
    // 可能存在名字一样但是价格不一样的情况
  };

  return (
    <>
      <Button type="primary" onClick={showModal}>
        填写入职表
      </Button>
      <Modal
        title="入职表"
        open={isModalOpen}
        onOk={handleOk}
        onCancel={handleCancel}
      >
        <Form
          name="basic"
          labelCol={{ span: 8 }}
          wrapperCol={{ span: 16 }}
          initialValues={{ remember: true }}
          onFinish={onFinish}
          onFinishFailed={onFinishFailed}
          autoComplete="off"
          ref={form}
        >
          {/* <Form.Item
            label="姓名"
            name="username"
            rules={[{ required: true, message: "请输入姓名" }]}
          >
            <Input />
          </Form.Item> */}

          {/* <Form.Item
            label="年龄"
            name="age"
            rules={[{ required: true, message: "请输入年龄" }]}
          >
            <Input />
          </Form.Item> */}
          <Form.Item
            label="物品"
            name="goods"
            rules={[{ required: true, message: "身份证号" }]}
          >
            <Select style={{ width: 120 }} onChange={handleChange} labelInValue>
              {goods.map((good,index) => {
                return <Option key={index} value={good.price}>{good.name}</Option>;
              })}
            </Select>
          </Form.Item>
          <Form.Item
            label="价格"
            name="price"
            rules={[{ required: true, message: "价格" }]}
          >
            <Input/>
          </Form.Item>
        </Form>
      </Modal>
    </>
  );
};

export default App;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值