formative
TypeScript icon, indicating that this package has built-in type declarations

2.0.2 • Public • Published

Formative

Type Safe Forms with React Hooks

(A work in progress - All contributions welcome!)

Getting Started

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

Validation

Formative is opinionated when it comes to validation. useForm<Form>(form, schema) requires 3 things, a Typescript Form type, the initial form object instance, and a Yup schema. All validation is defined by the Yup schema definition that you provide to useForm.

Note: Currently we only support synchronous Yup validation, async support coming soon.

Submission

The useForm hook returns a useHandleSubmit hook that takes your submission callback function. This callback can contain your async form submission logic.

Type Safety

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.

Package Sidebar

Install

npm i formative

Weekly Downloads

1,116

Version

2.0.2

License

MIT

Unpacked Size

116 kB

Total Files

13

Last publish

Collaborators

  • jabapyth