Formik
When I first wrote fluentvalidation-ts, I had seamless integration with Formik in mind.
The ValidationErrors object returned by the .validate function has been designed to "just work" with Formik, so you can start using the two together with minimal effort.
If you're not familiar with Formik, it's a fantastic library for writing forms in React.
Usage
To use fluentvalidation-ts with Formik, simply define a Validator for your form model, instantiate an instance of your validator, then pass the validator's .validate method to Formik's validate prop:
import { Formik } from 'formik';
import { Validator } from 'fluentvalidation-ts';
type FormModel = { username: string };
class MyFormValidator extends Validator<FormModel> {
constructor() {
super();
this.ruleFor('username').notEmpty().withMessage('Please enter your username');
}
}
const formValidator = new MyFormValidator();
export const MyForm = () => (
<Formik<FormModel>
validate={formValidator.validate}
...
>
...
</Formik>
);