MCPcopy Create free account
hub / github.com/TanStack/router / useRouterState

Function useRouterState

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

Source from the content-addressed store, hash-verified

20> = unknown extends TSelected ? RouterState<TRouter['routeTree']> : TSelected
21
22export function useRouterState<
23 TRouter extends AnyRouter = RegisteredRouter,
24 TSelected = unknown,
25>(
26 opts?: UseRouterStateOptions<TRouter, TSelected>,
27): Accessor<UseRouterStateResult<TRouter, TSelected>> {
28 const contextRouter = useRouter<TRouter>({
29 warn: opts?.router === undefined,
30 })
31 const router = opts?.router || contextRouter
32
33 // During SSR we render exactly once and do not need reactivity.
34 // Avoid subscribing to the store on the server since the server store
35 // implementation does not provide subscribe() semantics.
36 const _isServer = isServer ?? router.isServer
37 if (_isServer) {
38 const state = router.stores.__store.get() as RouterState<
39 TRouter['routeTree']
40 >
41 const selected = (
42 opts?.select ? opts.select(state) : state
43 ) as UseRouterStateResult<TRouter, TSelected>
44 return (() => selected) as Accessor<
45 UseRouterStateResult<TRouter, TSelected>
46 >
47 }
48
49 if (!opts?.select) {
50 return (() => router.stores.__store.get()) as Accessor<
51 UseRouterStateResult<TRouter, TSelected>
52 >
53 }
54
55 const select = opts.select
56
57 return Solid.createMemo((prev: TSelected | undefined) => {
58 const res = select(router.stores.__store.get())
59 if (prev === undefined) return res
60 return replaceEqualDeep(prev, res)
61 }) as Accessor<UseRouterStateResult<TRouter, TSelected>>
62}

Callers 15

TanStackRouterDevtoolsFunction · 0.90
setupFunction · 0.90
RootComponentFunction · 0.90
RouterSpinnerFunction · 0.90
RootComponentFunction · 0.90
RouterSpinnerFunction · 0.90
LoginComponentFunction · 0.90
RouterSpinnerFunction · 0.90
RouterSpinnerFunction · 0.90
RootComponentFunction · 0.90
MasksLayoutFunction · 0.90

Calls 3

useRouterFunction · 0.90
replaceEqualDeepFunction · 0.90
getMethod · 0.65

Tested by 1

setupFunction · 0.72