(A work in progress - All contributions welcome!)
Install the package with you favorite package manager
npm install --save formative
or
yarn add formative
Import into your React component
import React from 'react';
import { useForm } from 'formative';
...
function MyReactFormComponent() {
const {
inputHandlerProps,
useHandleSubmit
} = useForm<Form>(form, schema);
const handleSubmit = useHandleSubmit(() => {
// Async form submission goes here!
alert('submitted');
});
return (
<form onSubmit={handleSubmit}>
<input name="email" {...inputHandlerProps} />
<input type="password" name="password" {...inputHandlerProps} />
<button type="submit">Submit</button>
</form>
);
}
Check out a working example here
Formative is opinionated when it comes to validation.
useForm<Form>(form, schema)
requires 3 things, a TypescriptForm
type, the initialform
object instance, and a Yupschema
. All validation is defined by the Yup schema definition that you provide touseForm
.Note: Currently we only support synchronous Yup validation, async support coming soon.
The
useForm
hook returns auseHandleSubmit
hook that takes your submission callback function. This callback can contain your async form submission logic.
By providing the Typescript type definition to the
useForm<MyFormType>
hook we can provide all the wonders of the Typescript feedback loop and other type safety benefits.