useFieldApi.tsx 780 B

12345678910111213141516171819202122
  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. // @ts-ignore
  12. setValue: (value: any) => formApi.setValue(field, value),
  13. });
  14. function useFieldApi(field: string) {
  15. const formApi = useFormApi();
  16. const fieldApi = buildFieldApi(formApi, field);
  17. return fieldApi;
  18. }
  19. export default useFieldApi;