React bindings for Universal Form Adapter
npm install @samithahansaka/formless-react


React hooks and components for Formless - the universal form adapter for React.
| Bundle Size | Minified | Gzipped |
| ----------- | -------- | ------- |
| ESM | 12.31 KB | ~3.5 KB |
This package provides the React bindings including hooks, components, and context providers.
``bash`
npm install @samithahansaka/formless-react @samithahansaka/formless-core
> Note: For most users, we recommend installing @samithahansaka/formless which includes this package and all adapters.
Main hook for creating a form instance.
`tsx
import { useUniversalForm } from '@samithahansaka/formless-react';
const form = useUniversalForm({
adapter: myAdapter(),
schema: mySchema,
defaultValues: { name: '', email: '' },
mode: 'onBlur',
});
`
Returns:
- values - Current form valueserrors
- - Validation errorsisSubmitting
- , isValid, isDirty - Form stategetValue(path)
- , setValue(path, value) - Value accessorsgetError(path)
- , setError(path, error) - Error accessorsregister(path)
- - Field registrationhandleSubmit(onValid, onInvalid?)
- - Submit handlerreset(values?)
- - Reset formtrigger(paths?)
- - Trigger validation
Hook for individual field state.
`tsx
import { useField } from '@samithahansaka/formless-react';
const { value, error, isTouched, isDirty, onChange, onBlur } = useField(
form,
'email'
);
`
Hook for dynamic field arrays.
`tsx
import { useFieldArray } from '@samithahansaka/formless-react';
const { fields, append, remove, swap, move } = useFieldArray(form, 'items');
`
Hook for watching specific field values.
`tsx
import { useWatch } from '@samithahansaka/formless-react';
const email = useWatch(form, 'email');
const [name, age] = useWatch(form, ['name', 'age']);
`
Simple field component with automatic registration.
`tsx
import { Field } from '@samithahansaka/formless-react';
`
Component for rendering dynamic arrays.
`tsx
import { FieldArray } from '@samithahansaka/formless-react';
{({ fields, append, remove }) => (
<>
{fields.map((field, index) => (
} />
))}
>
)}
`
Form wrapper with context provider.
`tsx
import { Form } from '@samithahansaka/formless-react';
Context
$3
Share form instance via context.
`tsx
import { FormProvider, useFormContext } from '@samithahansaka/formless-react';// Parent
;
// Child
function MyFields() {
const form = useFormContext();
return ;
}
``For full documentation, visit the main repository.
MIT