22 lines
729 B
JavaScript
22 lines
729 B
JavaScript
import * as React from 'react';
|
|
import { useLocalizationContext } from './useUtils';
|
|
export function useValidation(props, validate, isSameError, defaultErrorState) {
|
|
const {
|
|
value,
|
|
onError
|
|
} = props;
|
|
const adapter = useLocalizationContext();
|
|
const previousValidationErrorRef = React.useRef(defaultErrorState);
|
|
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;
|
|
} |