reactjs - 如何在可重用组件中输入React Hook Form control prop?

标签 reactjs typescript react-hook-form

我有一个可重复使用的表单。该表单可以根据其使用位置而具有不同的输入。我将 control 作为 prop 从父组件(包含所有逻辑)以 any 类型传递给此表单,但我希望有更严格的类型。如何做到这一点?

我的意思是,在一个组件中,输入可以类似于 {name: ""} 和另一个 {face: "", address: ""} 那么如何输入CreateForm 中的 control 属性以便它可以处理不同的输入?

保存输入逻辑的父组件:

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}
          />
        )
  );
};

CreateForm.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}
      />
  );
};

啊啊啊

最佳答案

可以添加FieldValues类型

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


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

关于reactjs - 如何在可重用组件中输入React Hook Form control prop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74614458/

相关文章:

javascript - webpack错误: CLI moved into a separate package: webpack-cli

javascript - 当我长时间滑过最后一张幻灯片时,Swiperjs 重置到上一张幻灯片

ReactJS 组件设置状态没有执行任何操作?

reactjs - React-hook-form 如何与其他字段交互?

reactjs - React JS - 将 Canvas 动画保存为 gif

angular - 动态更改提供者

javascript - 在 react js中悬停卡片时播放视频并在不悬停时显示默认图像

javascript - Angular:我想将 div 的焦点从箭头键按钮移到另一个

javascript - 如何使react-hook-form在一页中使用多个表单?

javascript - 如何在 react-hook-forms 中重置自动完成?