import { RefObject, Dispatch, SetStateAction, EffectCallback, DependencyList } from 'react'; import { DefineElement } from '../types'; /** * 将某个值使用ref同步,主要用于对付组件的闭包问题 * @param value */ export declare function useSync(value: T): RefObject; /** * 同步的状态,state包裹在ref内,主要用于对付组件的闭包问题 * @param initialState */ export declare function useSyncState(initialState: T | (() => T)): [RefObject, Dispatch>]; export declare function useSyncState(): [RefObject, Dispatch>]; /** * 强制更新组件 */ export declare function useForceUpdate(): () => void; /** * 派生状态 * @param referredState 原始状态 * @param deps 依赖,类似useMemo的第二个参数,当依赖改变时会更新派生状态,若无该参数,则状态本身将会作为依赖 */ export declare function useDerivedState(referredState: (prevState: T | undefined) => T, deps: any[]): [RefObject, Dispatch>]; export declare function useDerivedState(referredState: T, deps?: any[]): [RefObject, Dispatch>]; export declare function useMounted(): void; /** * 得到一个RefObject,用于判断组件是否卸载 * @param onUnmount 回调函数,卸载时触发 */ export declare function useUnmounted(onUnmount?: () => void): RefObject; /** * 处理受控组件的外部属性与内部属性 * @param defaultValue * @param value * @param onChange */ export declare function useControlled(defaultValue: T, value?: T, onChange?: (value: T) => void): [RefObject, Dispatch>]; export declare function useControlled(defaultValue?: T, value?: T, onChange?: (value: T) => void): [RefObject, Dispatch>]; export declare function useControlled(defaultValue: () => T, value?: T, onChange?: (value: T) => void): [RefObject, Dispatch>]; /** * 将某个方法使用loading包裹 */ export declare function useLoading(fn: (...args: A) => R | Promise, referredLoading?: boolean): [ RefObject, (...args: A) => Promise, Dispatch> ]; /** * 获取容器元素,通常用于`container`或`effectContainer`属性 * @param container * @param effectContainer * @param defaultContainer 默认为`document.body` */ export declare function useContainer(container?: DefineElement, effectContainer?: DefineElement, defaultContainer?: DefineElement): RefObject; /** * 使用外部类,该方法可避免`StrictMode`下,React渲染行为与外部类实例生命周期不同步的问题 */ export declare function useExternalClass(setup: () => T, cleanup?: (instance: T) => void): RefObject; /** * 用法同{@link useEffect},但StrictMode下不会执行两次 */ export declare function useStrictEffect(effect: EffectCallback, deps?: DependencyList): void; /** * 用法同{@link useEffect},但会排除首次渲染 */ export declare function useUpdateEffect(effect: EffectCallback, deps?: DependencyList): void; /** * 用法同{@link useMemo},但StrictMode下不会执行两次 */ export declare function useStrictMemo(factory: () => T, deps: DependencyList): T | undefined;