UNPKG

@shopgate/engage

Version:
33 lines (32 loc) 893 B
import { useState, useEffect, useCallback } from 'react'; import { validate as validator } from "./validation"; /** * @param {Object} constraints The rules. * @returns {{ valid: ?boolean, validationErrors: ?Object, validate: Function }} */ export function useValidation(constraints) { const [valid, setValid] = useState(null); const [validationErrors, setValidationErrors] = useState(undefined); useEffect(() => { setValid(null); setValidationErrors(undefined); }, [constraints]); const validate = useCallback(values => { const { valid: isValid, validationErrors: errors } = validator(values, constraints); setValid(isValid); setValidationErrors(errors); return isValid; }, [constraints]); const reset = useCallback(() => { setValidationErrors(); }, []); return { valid, validationErrors, validate, reset }; }