useFieldApi.tsx 762 B

123456789101112131415161718192021
  1. import React from 'react';
  2. import useFormApi from './useFormApi';
  3. import { FormApi } from '../interface';
  4. import { ReactFieldError as FieldError } from '../errorMessage';
  5. const buildFieldApi = (formApi: FormApi, field: string) => ({
  6. getError: () => formApi.getError(field),
  7. setError: (error: FieldError) => formApi.setError(field, error),
  8. getTouched: () => formApi.getTouched(field),
  9. setTouched: (isTouched: boolean) => formApi.setTouched(field, isTouched),
  10. getValue: () => formApi.getValue(field),
  11. setValue: (value: any) => formApi.setValue(field, value),
  12. });
  13. function useFieldApi(field: string) {
  14. const formApi = useFormApi();
  15. const fieldApi = buildFieldApi(formApi, field);
  16. return fieldApi;
  17. }
  18. export default useFieldApi;