--- id: relay-example title: Simple Example --- ## Form Simple Example ```ts import * as React from 'react'; import { useCallback } from 'react'; // replace ... with relay-forms, react-relay-forms or relay-forms-nodeps import { useFormSubmit, useFormState, useFormSetValue } from '...'; export const HAVE_ERRORS = 'have errors'; export const Errors: React.FC = () => { const { errors, isSubmitting, isValidating } = useFormState(); return ( <>
{errors ? HAVE_ERRORS : ''}
;
{'' + isSubmitting}
;
{'' + isValidating}
; ); }; const validateField = (value: any, name: string) => { if (value && value.length < 5) { return getFieldError(name, value); } return undefined; }); export const FormInternal: React.FC = ({ onSubmit }) => { const data = useFormSubmit({ onSubmit }); return (
); }; export const getFieldError = (name, value) => name + ' wrong length, minimum 5 current ' + value.length; export const Field: React.FC = ({ placeholder, fieldKey, validate }) => { const validateCallback = useCallback( (value: any) => { return validate(value, fieldKey); }, [fieldKey, validate], ); const [{ error }, setValue] = useFormSetValue({ key: fieldKey, validate: validate ? validateCallback : undefined, initialValue: "try", }); const setValueCallback = useCallback( (event) => { const value = event.target.value; setValue(value); }, [setValue], ); return ( <> {error &&
{error}
} setValueCallback(value)} /> ); }; ```