@leancodepl/utils
Version:
Common utility functions and React hooks for web applications
31 lines (30 loc) • 1.07 kB
TypeScript
type AnyFunction = (...args: any[]) => any;
/**
* React hook for bound task execution with loading state.
* Creates a wrapped version of a function that automatically tracks loading state.
*
* @template T - The type of the function being wrapped
* @param block - The function to wrap with task tracking
* @returns A tuple containing [isLoading: boolean, wrappedFunction: T]
* @example
* ```typescript
* function UserProfile({ userId }: { userId: string }) {
* const [user, setUser] = useState<User | null>(null);
*
* const [isLoading, loadUser] = useBoundRunInTask(async () => {
* const userData = await fetchUser(userId);
* setUser(userData);
* });
*
* useEffect(() => {
* loadUser();
* }, [userId, loadUser]);
*
* if (isLoading) return <div>Loading...</div>;
* return <div>{user?.name}</div>;
* }
* ```
*/
export declare function useBoundRunInTask<T extends AnyFunction>(block: T): [boolean, T];
export declare function useBoundRunInTask<T extends AnyFunction>(block: T | undefined): [boolean, T | undefined];
export {};