UNPKG

@react-hookz/web

Version:

React hooks done right, for browser and SSR.

37 lines (36 loc) 1.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useValidator = void 0; var react_1 = require("react"); var __1 = require(".."); /** * Performs validation when any of provided dependencies has changed. * * @param validator Function that performs validation. * @param deps Dependencies list that passed straight to underlying `useEffect`. * @param initialValidity Initial validity state. */ function useValidator(validator, deps, initialValidity) { if (initialValidity === void 0) { initialValidity = { isValid: undefined }; } var _a = (0, __1.useSafeState)(initialValidity), validity = _a[0], setValidity = _a[1]; var validatorRef = (0, __1.useSyncedRef)(function () { if (validator.length) { validator(setValidity); } else { setValidity(validator()); } }); (0, react_1.useEffect)(function () { validatorRef.current(); // eslint-disable-next-line react-hooks/exhaustive-deps }, deps); return [ validity, (0, react_1.useCallback)(function () { validatorRef.current(); // eslint-disable-next-line react-hooks/exhaustive-deps }, []), ]; } exports.useValidator = useValidator;