
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
@reusejs/react-form-hook
Advanced tools
React Form Hook to handle complex payloads, errors, validation with ease
react-form-hook is a package for reactJs which simplifies form handling process. it simplifies the implementaion of form validation and error.handling.
$ npm i @reusejs/react-form-hook
or
$ yarn add @reusejs/react-form-hook
| Function | Description | Usage |
|---|---|---|
| setField | sets the value of a field in the form Object. | form.setField('name', 'Jon Doe'); |
| getField | gets the value of a field in the form Object | form.getField('name'); |
| busy | indicates when a form is processing action. We can access this flag in the component and show a loader based on its value. | form.busy |
| startProcessing | sets busy flag as true. Clears Errors Object. | form.startProcessing(); |
| finishProcessing | sets busy flag as false. | form.finishProcessing(); |
| resetStatus | resets the errors object in the form, and sets busy flag to false | form.resetStatus() |
| Function | Description | Usage |
|---|---|---|
| setValidationRules | Set validation Rules for the form. Expects a validateJs Constraints Format. | form.setValidationRules(constraints); |
| validate | Validate the complete form object based on the constraints defined. Sets the error object for each field. Returns true if no errors, else returns false | form.validate(); |
| validateSingleField | Validate a single field of a form object and sets the Error for this field. Returns true if no errors, else returns false | form.validateSingleField('email'); |
| Function | Description | Usage |
|---|---|---|
| setErrors | sets errors for the form fields. You can set errors manually if you are not using Validate functionality | form.setErrors(errors) |
| pushError | append errors to the existing form errors object. | form.pushError(newErrorObject) |
| forgetErrors | clear the errors object for the form. | form.forgetErrors() |
| hasErrors | checks if the a form object hasErrors or not. | form.errors.hasErrors() |
| has | checks if a particular field of the form has errors. | form.errors.has('email') |
| all | gets all the errors of the form object. | form.errors.all() |
| flatten | Flattens the Error object and get all the error messages in form of an array. | form.errors.flatten() |
| get | get errors for a single field. | form.errors.get('email') |
import React, { useEffect } from "react";
import useBetaForm from "@reusejs/react-form-hook";
// Define Validation Rules for the form fields (Refer to validateJs)
const constraints = {
name: {
presence: { allowEmpty: false, message: "this field is required" },
},
email: {
presence: { allowEmpty: false, message: "this field is required" },
},
phone_number: {
presence: { allowEmpty: false, message: "this field is required" },
},
};
export default function App() {
// initialise form object
const form = useBetaForm({
name: "",
email: "",
phone_number: "",
});
// set validation rules for the form when the component is mounted.
useEffect(() => {
form.setValidationRules(constraints);
}, []);
const handleSubmit = () => {
// validate the all the form fields
const valid = form.validate();
if (valid) {
// make api call
}
};
const validateEmail = (email) => {
// validate single form field
const isValid = form.validateSingleField("email");
};
return (
<div className="App">
<form>
<div className="form-el-wrapper">
<label className="label" htmlFor="name">
Name
</label>
<br />
<input
name="name"
value={form.getField("name")}
id="name"
onChange={(v) => {
form.setField("name", v.target.value);
}}
/>
{form.errors.has("name") && (
<div className="error">{form.errors.get("name")[0]}</div>
)}
</div>
<br />
<div className="form-el-wrapper">
<label className="label" htmlFor="email">
Email
</label>
<br />
<input
name="email"
value={form.getField("email")}
id="email"
type="email"
onChange={(v) => {
form.setField("email", v.target.value);
}}
onBlur={(v) => validateEmail(v.target.value)}
/>
{form.errors.has("email") && (
<div className="error">{form.errors.get("email")[0]}</div>
)}
</div>
<br />
<div className="form-el-wrapper">
<label htmlFor="phone_number">Phone Number</label>
<br />
<input
name="phone_number"
value={form.getField("phone_number")}
id="phone_number"
onChange={(v) => {
form.setField("phone_number", v.target.value);
}}
/>
{form.errors.has("phone_number") && (
<div className="error">{form.errors.get("phone_number")[0]}</div>
)}
</div>
<br />
<button type="button" onClick={() => handleSubmit()}>
Submit{" "}
</button>
</form>
</div>
);
}
FAQs
React Form Hook to handle complex payloads, errors, validation with ease
We found that @reusejs/react-form-hook demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 5 open source maintainers 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
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.