我有一个可重用的表单。这个表单可以有不同的输入,这取决于它在哪里被使用。我把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
1条答案
按热度按时间nbnkbykc1#
可以添加
FieldValues
类型