import React from 'react'; import { FormProvider as RHFFormProvider, useForm as useRHFForm, Controller as RHFController, ControllerProps as RHFControllerProps, } from 'react-hook-form'; import type { FieldValues, UseFormProps, UseFormReturn, FieldPath, } from 'react-hook-form'; export interface ExtendedUseFormReturn< TFieldValues extends FieldValues = FieldValues > extends UseFormReturn {} export interface ExtendedUseFormProps< TFieldValues extends FieldValues = FieldValues > extends UseFormProps {} // 导出 react-hook-form 的核心 hooks 和组件 export const useForm = ( props?: ExtendedUseFormProps ): ExtendedUseFormReturn => { const { ...restProps } = props || {}; const formMethods = useRHFForm({ shouldFocusError: true, ...restProps, }); return formMethods; }; // Form 组件的 Props 类型 export interface FormProps extends ExtendedUseFormReturn { children?: React.ReactNode; } // 自定义 Controller 组件,提供更好的类型推导 export interface ControllerProps< TFieldValues extends FieldValues = FieldValues, TName extends FieldPath = FieldPath > extends RHFControllerProps {} export const Controller = < TFieldValues extends FieldValues = FieldValues, TName extends FieldPath = FieldPath >( props: ControllerProps ) => { return ; }; // 主 Form 组件 const Form = ( form: FormProps ) => { return {form.children}; }; export default Form;