MCPcopy
hub / github.com/TanStack/router / useRouterState

Function useRouterState

packages/solid-router/src/useRouterState.tsx:47–86  ·  view source on GitHub ↗
(
  opts?: UseRouterStateOptions<TRouter, TSelected>,
)

Source from the content-addressed store, hash-verified

45> = unknown extends TSelected ? RouterState<TRouter['routeTree']> : TSelected
46
47export function useRouterState<
48 TRouter extends AnyRouter = RegisteredRouter,
49 TSelected = unknown,
50>(
51 opts?: UseRouterStateOptions<TRouter, TSelected>,
52): Accessor<UseRouterStateResult<TRouter, TSelected>> {
53 const contextRouter = useRouter<TRouter>({
54 warn: opts?.router === undefined,
55 })
56 const router = opts?.router || contextRouter
57
58 // During SSR we render exactly once and do not need reactivity.
59 // Avoid subscribing to the store on the server since the server store
60 // implementation does not provide subscribe() semantics.
61 const _isServer = isServer ?? router.isServer
62 if (_isServer) {
63 const state = router.state as RouterState<TRouter['routeTree']>
64 const selected = (
65 opts?.select ? opts.select(state) : state
66 ) as UseRouterStateResult<TRouter, TSelected>
67 return (() => selected) as Accessor<
68 UseRouterStateResult<TRouter, TSelected>
69 >
70 }
71
72 return useStore(
73 router.__store,
74 (state) => {
75 if (opts?.select) return opts.select(state)
76
77 return state
78 },
79 {
80 // Use deep equality to match behavior of solid-store 0.7.0 which used
81 // reconcile(). This ensures updates work correctly when selectors
82 // return new object references but with the same values.
83 equal: deepEqual,
84 },
85 ) as Accessor<UseRouterStateResult<TRouter, TSelected>>
86}

Callers 15

TanStackRouterDevtoolsFunction · 0.90
ScriptsFunction · 0.90
useTagsFunction · 0.90
useCanGoBackFunction · 0.90
CatchNotFoundFunction · 0.90
useMatchFunction · 0.90
useLinkPropsFunction · 0.90
TransitionerFunction · 0.90
MatchesInnerFunction · 0.90
useMatchRouteFunction · 0.90
MatchRouteFunction · 0.90

Calls 1

useRouterFunction · 0.90

Tested by 1

setupFunction · 0.72