
Security Fundamentals
Obfuscation 101: Unmasking the Tricks Behind Malicious Code
Attackers use obfuscation to hide malware in open source packages. Learn how to spot these techniques across npm, PyPI, Maven, and more.
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' } : {})
}),
});
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): 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): 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).
FAQs
Easy forms in React with hooks
The npm package form-hooks receives a total of 19 weekly downloads. As such, form-hooks popularity was classified as not popular.
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 Fundamentals
Attackers use obfuscation to hide malware in open source packages. Learn how to spot these techniques across npm, PyPI, Maven, and more.
Security News
Join Socket for exclusive networking events, rooftop gatherings, and one-on-one meetings during BSidesSF and RSA 2025 in San Francisco.
Security News
Biome's v2.0 beta introduces custom plugins, domain-specific linting, and type-aware rules while laying groundwork for HTML support and embedded language features in 2025.