• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

antd 在函数组件拿到 form

武飞扬头像
wuliCaibao
帮助1

函数组件中暴露 form 实例:

import React, { forwardRef, useImperativeHandle } from 'react';
import Form, { FormComponentProps } from 'antd/lib/form/Form';

const FCForm = forwardRef<FormComponentProps, FCFormProps>(({ form, onSubmit }, ref) => {
  useImperativeHandle(ref, () => ({
    // 这里就是暴露的表单实例,此处可以获取表单的内容、数据
    form: props.form
  }));
  return (
        <div className={ Styles.ApplyForm } style={ style }>
            <Form colon={ false }>
               <Form.Item
                   label="申请人"
                   colon={ false }
                   name="applyer"
                   { ...formItemLayout }
               >
                   { getFieldDecorator('applyer', { 
                         rules: [{ required: true, message: '请输入申请人!' }],
                         initialValue: username
                     })(<Input disabled />) }
               </Form.Item>
               <Form.Item
                   label="申请理由"
                   colon={ false }
                   name="reason"
                   { ...formItemLayout }
               >
                   { getFieldDecorator('reason', {
                       rules: [{ required: true, message: '请输入理由!' }],
                   })(<Input.TextArea rows={ 4 } />) }
               </Form.Item>
            </Form>
        </div>
    );
});
const EnhancedFCForm = Form.create<FCFormProps>()(FCForm);
学新通

外部引用该函数组件:

const TestForm = () => {
  // 这里就可以拿到函数组件内部表单的实例
  const formRef = createRef<Ref>();
  return (
    <EnhancedFCForm
      onSubmit={() => console.log(formRef.current!.form.getFieldValue('name'))}
      wrappedComponentRef={formRef}
    />
  );
};

参考antd官网

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggfaag
系列文章
更多 icon
同类精品
更多 icon
继续加载