@react-hookz/web
Version:
React hooks done right, for browser and SSR.
18 lines (17 loc) • 1.08 kB
TypeScript
import { DependencyList, Dispatch } from 'react';
import { IInitialState, INextState } from '../util/resolveHookState';
export interface IValidityState extends Record<any, any> {
isValid: boolean | undefined;
}
export declare type IValidatorImmediate<V extends IValidityState = IValidityState> = () => V;
export declare type IValidatorDeferred<V extends IValidityState = IValidityState> = (done: Dispatch<INextState<V>>) => any;
export declare type IValidator<V extends IValidityState = IValidityState> = IValidatorImmediate<V> | IValidatorDeferred<V>;
export declare type IUseValidatorReturn<V extends IValidityState> = [V, () => void];
/**
* 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.
*/
export declare function useValidator<V extends IValidityState>(validator: IValidator<V>, deps: DependencyList, initialValidity?: IInitialState<V>): IUseValidatorReturn<V>;