
Product
Announcing Socket Fix 2.0
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
use-form-validator
Advanced tools
Hook for form validation in React
npm add use-form-validator
API
import React, { useState, useCallback } from "rect";
import useFormValidator from "use-form-validator";
function Form() {
// data is an object of form field values, .e.g {name: "Bob", email: "bob@example.com"}
const [data, setData] = useState({});
const [rules] = useState({
name: "required|max:255",
email: "required|max:255|email",
});
// Default message overrides
const [messages] = useState({
// Override default "required" message
required: "This field is required",
// Override "name.required" message
name: {
required: "Please enter your name",
},
});
const validator = useFormValidator(data, rules, messages);
// validator.valid => boolean if form validation state
// validator.errors.all => array of form errors
// validator.errors.get(name) => array of errors for field
// validator.errors.first(name) => first error for field or null if there is no error
}
Basic Example
import React, { useState, useCallback } from "rect";
import useFormValidator from "use-form-validator";
function Form() {
const [data, setData] = useState({});
const [rules] = useState({
name: "required|max:255",
email: "required|max:255|email",
});
// Default message overrides
const [messages] = useState({
// Override default "required" message
required: "This field is required",
// Override "name.required" message
name: {
required: "Please enter your name",
},
});
const validator = useFormValidator(data, rules, messages);
const onSubmit = useCallback(
(event) => {
event.preventDefault();
if (validator.valid) {
// Validated data
console.log(data);
}
},
[validator]
);
const onChange = useCallback(
({ target: { name, value } }) => {
setData((data) => {
data[name] = value;
return data;
});
},
[setData]
);
return (
<form onSubmit={onSubmit}>
<div>
{/* "name" error message */}
<input name="name" onChange={onChange} />
{validator.errors.first("name")}
</div>
<div>
<input name="email" onChange={onChange} />
{/* "email" error message */}
{validator.errors.first("email")}
</div>
<div>
<button>submit</button>
</div>
</form>
);
}
Rule | Description |
---|---|
required | Test value has a value |
min:min | Test value length or number is >= min |
max:max | Test value length or number is <= max |
Test value email format | |
between:min,max | Test value length or number between min and max |
All contributions are welcome, just submit a PR with a clear explanation of your changes.
Changes to the lib are made inside src/lib
and changes to examples are made inside src/examples
The following commands will serve the examples on localhost:8081.
npm install
npm run watch-examples
The below script will bump the major, minor, or patch number by one and make a new NPM and Github release.
npm run release {release: ["major", "minor", "patch"]} # e.g. npm run release patch
FAQs
Hook for form validation in React
We found that use-form-validator 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.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.