Można stworzyć własny walidator w React Hook Form, używając funkcji „useController” i przekazując funkcję walidacji jako jedno z jego argumentów.
Oto przykład:
import { useController } from "react-hook-form";
const MyCustomValidator = (value) => {
if (value !== "expectedValue") {
return {
type: "custom",
message: "Value must be equal to 'expectedValue'",
ref: {},
};
}
return true;
};
const MyForm = () => {
const { register, handleSubmit, errors } = useController({
defaultValues: {
customField: "",
},
validateCriteriaMode: "firstError",
validate: {
customField: MyCustomValidator,
},
});
const onSubmit = (data) => {
console.log(data);
};
return (
);
};
Funkcja walidatora powinna zwrócić wartość true w przypadku braku błędów lub obiekt zawierający informacje o błędzie (typ błędu, komunikat i referencję do kontrolki formularza). W powyższym przykładzie funkcja MyCustomValidator sprawdza, czy wartość pola jest równa „expectedValue”.