typescript 如何在可重用组件中输入React Hook Form控件属性?

uwopmtnx  于 2022-11-30  发布在  TypeScript
关注(0)|答案(1)|浏览(128)

我有一个可重用的表单。这个表单可以有不同的输入,这取决于它在哪里被使用。我把control作为属性从类型为any的父组件(它保存所有的逻辑)传递给这个表单,但是我想有一个更严格的类型。如何做到这一点?
我的意思是,在一个组件中,一个输入可以像{name: ""},另一个可以像{face: "", address: ""},那么如何在CreateForm中键入控件属性,以便它可以处理不同的输入?
保存输入逻辑的父组件:

type CreateFaceInput = {
      name: string;
      cover: string;
    };
    
const FaceModal = ({ open, onClose }: IFaceModalProps) => {

  const {
    handleSubmit,
    control,
  } = useForm<CreateFaceInput>({
    defaultValues: {
      name: '',
      cover: '',
    },
  });

  const onSubmit = (data: CreateFaceInput) => {};

  return (

          <CreateForm
            onSubmit={handleSubmit(onSubmit)}
            control={control}
          />
        )
  );
};

创建表单.tsx

import { Controller } from 'react-hook-form';

interface ICreateFormProps {
  control: any;
  onSubmit: () => void; 
}

const CreateForm = ({ onSubmit, control }: ICreateFormProps) => {

  return (
      <Controller
        render={({ field, fieldState: { error } }) => (
          <StyledTextField
            {...field}
          />
        )}
        control={control}
      />
  );
};

aaaa

nbnkbykc

nbnkbykc1#

可以添加FieldValues类型

import { Control, FieldValues } from "react-hook-form";

interface ICreateFormProps {
     control:?: Control<FieldValues, CreateFaceInput>;

相关问题