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