21 lines
1.4 KiB
TypeScript
21 lines
1.4 KiB
TypeScript
import { AnyRouter, RegisteredRouter, RouterState } from '@tanstack/router-core';
|
|
import { StructuralSharingOption, ValidateSelected } from './structuralSharing.js';
|
|
export type UseRouterStateOptions<TRouter extends AnyRouter, TSelected, TStructuralSharing> = {
|
|
router?: TRouter;
|
|
select?: (state: RouterState<TRouter['routeTree']>) => ValidateSelected<TRouter, TSelected, TStructuralSharing>;
|
|
} & StructuralSharingOption<TRouter, TSelected, TStructuralSharing>;
|
|
export type UseRouterStateResult<TRouter extends AnyRouter, TSelected> = unknown extends TSelected ? RouterState<TRouter['routeTree']> : TSelected;
|
|
/**
|
|
* Subscribe to the router's state store with optional selection and
|
|
* structural sharing for render optimization.
|
|
*
|
|
* Options:
|
|
* - `select`: Project the full router state to a derived slice
|
|
* - `structuralSharing`: Replace-equal semantics for stable references
|
|
* - `router`: Read state from a specific router instance instead of context
|
|
*
|
|
* @returns The selected router state (or the full state by default).
|
|
* @link https://tanstack.com/router/latest/docs/framework/react/api/router/useRouterStateHook
|
|
*/
|
|
export declare function useRouterState<TRouter extends AnyRouter = RegisteredRouter, TSelected = unknown, TStructuralSharing extends boolean = boolean>(opts?: UseRouterStateOptions<TRouter, TSelected, TStructuralSharing>): UseRouterStateResult<TRouter, TSelected>;
|