React使用useRef,提交兄弟组件的表单

需求:A、B为兄弟组件,A组件是一个没有提交按钮的表单,B组件有提交按钮,用来提交A组件的表单,且含有表单校验。使用ts。

解决方案:父组件使用useRef创建一个引用,保存在formRef中。将引用传给A组件中表单的ref属性,父组件通过formRef.current.validateFields()拿到表单的方法,并把function传给B组件的按钮。

import React, { useRef } from 'react';
interface FormData {
  // 在这里定义表单的数据类型
}
const Parent: React.FC = () => {
  const formRef = useRef<HTMLFormElement | null>(null);
  const handleFormSubmit = () => {
    if (formRef.current) {
      formRef.current.validateFields()
      .then((values:any) => {});
    }
  };
  return (
    <div>
      <A formRef={formRef} />
      <B onSubmitButtonClick={handleFormSubmit} />
    </div>
  );
};


interface AProps {
  formRef: React.MutableRefObject<HTMLFormElement | null>;
}
const A: React.FC<AProps> = ({ formRef }) => (
  <form ref={formRef}>
    {/* 表单的其他内容 */}
  </form>
);


interface BProps {
  onSubmitButtonClick: () => void;
}
const B: React.FC<BProps> = ({ onSubmitButtonClick }) => (
  <button onClick={onSubmitButtonClick}>提交</button>
);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值