Security News
Node.js EOL Versions CVE Dubbed the "Worst CVE of the Year" by Security Experts
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
form-hooks
Advanced tools
Easily create forms in React components -- with hooks! Essentially a dumbed down version of Formik using hooks.
npm install form-hooks
import { useForm } from 'form-hooks';
const Sample = () => (
const {
errors,
touched,
values,
handleBlur,
handleChange,
handleSubmit,
isSubmitting,
} = useForm({
initialValues: {
name: '',
email: '',
},
onSubmit: values => fetch(/* with values */),
validate: values => ({
...(!values.name.length ? { name: 'Requires a name' } : {}),
...(!values.email.length ? { email: 'Requires an email' } : {})
}),
}, options => [options.initialValues]);
return (
<form onSubmit={handleSubmit}>
<input name="name"
type="text"
value={values.name}
onChange={handleChange}
onBlur={handleBlur}
/>
{touched['name'] && errors['name']}
<input name="email"
type="text"
value={values.email}
onChange={handleChange}
onBlur={handleBlur}
/>
{touched['email'] && errors['email']}
<button type="submit" disabled={isSubmitting}>submit</button>
</form>
)
)
useForm<Values>(options: FormHookOptions, dependencies?: FormHookDependencies<Values>): FormHookState<Values>
- FormHookOptions
The useForm
hook takes some options (as an object) to initialize state
and manage form validation/submissions.
initialValues: Values
An object with the forms initial values. These values should not be required.
onSubmit: (values: Values) => void
Called when a form is submitted with the values set. Only called if validation passes.
validate: (values: Values) => FormHookErrors<Values> | Promise<FormHookErrors<Values>>
Called when a form is submitted prior to the onSubmit
call. Returns an object
of errors similar to Formik
.
validateOnBlur: boolean
- trueIndicates if useForm
should re-validate the input on blur.
Only fired when all fields have been touched that were in the initialValues
object.
validateOnChange: boolean
- trueIndicates if useForm
should re-validate the input on change.
Only fired when all fields have been touched that were in the initialValues
object.
useForm<Values>(options: FormHookOptions, dependencies?: FormHookDependencies<Values>): FormHookState<Values>
- FormHookState
errors: FormHookErrors<Values>
An object that contains the form errors where the key is the field name and the value is the error message.
touched: FormHookTouched<Values>
An object that contains which form fields have been touched. The key is the field name, the value is a boolean of if the field has been touched.
values: FormHookValues
An object that contains all of the values of the form. Initialized with the
initialValues
originally passed in. Modified by the handleChange
handler.
handleBlur: (event: React.ChangeEvent<any>) => void
Marks a field as touched
to show errors after all fields are touched.
handleChange: (event: React.ChangeEvent<any>) => void
Changes the fields value in the values
state.
handleSubmit: (event: React.ChangeEvent<HTMLFormElement>) => Promise<void>
Handles calling validation prior to the onSubmit
handler and setting the
touched
, errors
and isSubmitting
state internally.
isSubmitting: boolean
Boolean value if the form is currently submitting.
submitCount: number
Number of times the form was submitted.
setErrors: (errors: FormHookErrors<Values>) => void
Function that allows for errors to be set outside of the useForm
internal handlers (good for handling request errors).
setTouched: (name: keyof Values, touched?: boolean = true)
Sets a field to touched or untouched. Triggers a re-validation if
validateOnBlur
is enabled and all fields have been touched.
setValue: (name keyof Values, value: any)
Sets a fields value. Re-valdiates if validateOnChange
is enabled and
all required conditions are met.
resetForm: () => void
Resets a form to its initial state.
resetValue: (name: keyof Values, shouldResetTouched?: boolean = false)
Resets a field value to its initial value and resets its errors state. Can optionally reset its touched state.
FormHookDependencies<Values>
- Form ReinitializationThe second parameter to useForm
allows for a list of dependencies to be
declared from the collection of options passed through in the first argument.
A change in a dependency will reset the form. For instance in this example:
useForm(
{
initialValues: { first: 'John', last: 'Doe' },
onSubmit: () => {},
validate: () => ({}),
},
options => [options.initialValues]
);
Changing the initialValues
object will cause the Form to be re-initialized. initialValues
, errors
, touched
, submitCount
and isSubmitting
will be reset.
FAQs
Easy forms in React with hooks
We found that form-hooks demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
Security News
cURL and Go security teams are publicly rejecting CVSS as flawed for assessing vulnerabilities and are calling for more accurate, context-aware approaches.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.