one
Version:
One is a new React Framework that makes Vite serve both native and web.
85 lines • 3.24 kB
TypeScript
export type LoaderTimingEntry = {
path: string;
startTime: number;
moduleLoadTime?: number;
executionTime?: number;
totalTime?: number;
error?: string;
source: 'preload' | 'initial' | 'refetch';
};
export declare function getLoaderTimingHistory(): LoaderTimingEntry[];
/**
* Imperatively refetch loader data for a given path.
*
* @param pathname - The route path to refetch (e.g., '/users/123')
* @returns Promise that resolves when refetch completes
* @link https://onestack.dev/docs/api/hooks/useLoaderState#refetchloader
*
* @example
* ```tsx
* await refetchLoader('/users/123')
* ```
*/
export declare function refetchLoader(pathname: string): Promise<void>;
/**
* Refetch the loader data for a specific match (identified by routeId) by fetching
* the current page's loader JS and updating only that match entry in clientMatches.
*
* Note: the server's loader JS endpoint runs the *page* loader, so for layout
* routeIds this fetches fresh page data and stores it on the layout match. A
* dedicated per-layout refetch endpoint would be needed to truly re-run a layout
* loader in isolation; that can be added in a follow-up.
*/
export declare function refetchMatchLoader(routeId: string, currentPath: string): Promise<void>;
/**
* Access loader data with full state control including refetch capability.
* Use this when you need loading state or refetch; use `useLoader` for just data.
*
* @param loader - The loader function (optional - omit for just refetch/state)
* @returns Object with data, state ('idle' | 'loading'), and refetch function
* @link https://onestack.dev/docs/api/hooks/useLoaderState
*
* @example
* ```tsx
* const { data, state, refetch } = useLoaderState(loader)
*
* return (
* <div>
* {state === 'loading' && <Spinner />}
* <button onClick={refetch}>Refresh</button>
* <pre>{JSON.stringify(data)}</pre>
* </div>
* )
* ```
*/
export declare function useLoaderState<Loader extends Function = any, Returned = Loader extends (p: any) => any ? ReturnType<Loader> : unknown>(loader?: Loader): Loader extends undefined ? {
refetch: () => Promise<void>;
state: 'idle' | 'loading';
} : {
data: Returned extends Promise<any> ? Awaited<Returned> : Returned;
refetch: () => Promise<void>;
state: 'idle' | 'loading';
};
/**
* Load route data with SSR/SSG support. Returns the loader's data directly.
* For loading state and refetch capability, use `useLoaderState` instead.
*
* @param loader - The loader function exported from the route file
* @returns The awaited return value of your loader function
* @link https://onestack.dev/docs/api/hooks/useLoader
*
* @example
* ```tsx
* export async function loader({ params }) {
* return { user: await fetchUser(params.id) }
* }
*
* export default function UserPage() {
* const { user } = useLoader(loader)
* return <div>{user.name}</div>
* }
* ```
*/
export declare function useLoader<Loader extends Function, Returned = Loader extends (p: any) => any ? ReturnType<Loader> : unknown>(loader: Loader): Returned extends Promise<any> ? Awaited<Returned> : Returned;
export declare function resetLoaderState(): void;
//# sourceMappingURL=useLoader.d.ts.map