use-basin
Version:
A simple React hook for handling Basin AJAX forms.
64 lines (46 loc) • 1.77 kB
Markdown
# Basin React Hook
A simple React hook for handling Basin AJAX forms.
## Installation
Install the package:
```sh
npm i -D use-basin
```
**Note**: a React version above 16.8.3 must be installed as a peer dependency.
## Usage
Create a form that will submit to Basin using AJAX:
```js
import useBasin from 'use-basin';
const Form = () => {
const [state, submit] = useBasin('<form-id>');
return <form onSubmit={submit}>{/* inputs... */}</form>;
};
```
You can also create your own onSubmit handlers for custom error checking or other functionality:
```js
const onSubmit = (e) => {
e.preventDefault();
const data = new FormData(e.target);
console.log(data.get('name'));
// Be sure to call the submit function to actually
// submit the form.
submit(e);
};
```
You can also use the returned state object for loaders and error handling:
```js
import useBasin from 'use-basin';
const Form = () => {
const [{ pending, error, submitted }, submit] = useBasin('<form-id>');
if (pending) return <div>Submitting...</div>;
if (error) return <div>Something went wrong =(</div>;
if (submitted) return <div>Thanks for submitting our form!</div>;
return <form onSubmit={submit}>{/* inputs... */}</form>;
};
```
## State Variables
The following variables are returned in an object as the first value in the array:
| Name | Description | Type |
| --------- | --------------------------------------------- | --------- |
| Submitted | The form has been submitted | `boolean` |
| Pending | A POST request has started but not completed. | `boolean` |
| Error | The most recent POST request failed. | `boolean` |