react-hook-merge-state
Version:
在`useState`的基础上,对同一个状态的默认值、受控值进行对比监听
32 lines (31 loc) • 1.24 kB
TypeScript
export type UseMergeStateOptions<OriginType, ResultType = OriginType, ExtraValues extends any[] = any[]> = {
/**
* 默认状态值
*/
defaultValue?: OriginType | (() => OriginType);
/**
* 受控状态值
*/
value?: OriginType;
/**
* 受控状态值改变回调
*/
onChange?: (value: OriginType, prevValue?: OriginType, ...rest: ExtraValues) => void;
/**
* 将结果值类型转化为原始值类型
*/
transformToOrigin?: (value: ResultType) => OriginType;
/**
* 将原始值类型转化为结果值类型
*/
transformToResult?: (value: OriginType) => ResultType;
/**
* 自定义值比较方法
* @description 默认是执行深比较来决定两者的值是否相等,支持有些场景下传递自定义比较直方法来比较是否值变化
*/
compare?: (oldValue: any, newValue: any) => boolean;
};
/**
* 合并状态值
*/
export declare function useMergeState<OriginType, ResultType = OriginType, ExtraValues extends any[] = any[]>(defaultStateValue?: OriginType | (() => OriginType), option?: UseMergeStateOptions<OriginType, ResultType, ExtraValues>): [ResultType, (value: ResultType, ...rest: ExtraValues) => void];