23 lines
699 B
JavaScript
23 lines
699 B
JavaScript
import * as React from 'react';
|
|
import { useLocalizationContext } from '../useUtils';
|
|
export function useValidation(props, validate, isSameError) {
|
|
const {
|
|
value,
|
|
onError
|
|
} = props;
|
|
const adapter = useLocalizationContext();
|
|
const previousValidationErrorRef = React.useRef(null);
|
|
const validationError = validate({
|
|
adapter,
|
|
value,
|
|
props
|
|
});
|
|
React.useEffect(() => {
|
|
if (onError && !isSameError(validationError, previousValidationErrorRef.current)) {
|
|
onError(validationError, value);
|
|
}
|
|
|
|
previousValidationErrorRef.current = validationError;
|
|
}, [isSameError, onError, previousValidationErrorRef, validationError, value]);
|
|
return validationError;
|
|
} |