UNPKG

@material-ui/lab

Version:

Material-UI Lab - Incubator for Material-UI React components.

27 lines (23 loc) 1.04 kB
import * as React from 'react'; import { useUtils } from './useUtils'; var defaultIsSameError = function defaultIsSameError(a, b) { return a === b; }; export function makeValidationHook(validateFn) { var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, defaultValidationError = _ref.defaultValidationError, _ref$isSameError = _ref.isSameError, isSameError = _ref$isSameError === void 0 ? defaultIsSameError : _ref$isSameError; return function (value, props) { var utils = useUtils(); var previousValidationErrorRef = React.useRef(defaultValidationError || null); var validationError = validateFn(utils, value, props); React.useEffect(function () { if (props.onError && !isSameError(validationError, previousValidationErrorRef.current)) { props.onError(validationError, value); } previousValidationErrorRef.current = validationError; }, [previousValidationErrorRef, props, validationError, value]); return validationError; }; }