UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

30 lines 1.17 kB
import { isServer } from '@tanstack/router-core/isServer'; import * as Solid from 'solid-js'; import { replaceEqualDeep } from '@tanstack/router-core'; import { useRouter } from './useRouter'; export function useRouterState(opts) { const contextRouter = useRouter({ warn: opts?.router === undefined, }); const router = opts?.router || contextRouter; // During SSR we render exactly once and do not need reactivity. // Avoid subscribing to the store on the server since the server store // implementation does not provide subscribe() semantics. const _isServer = isServer ?? router.isServer; if (_isServer) { const state = router.stores.__store.state; const selected = (opts?.select ? opts.select(state) : state); return (() => selected); } if (!opts?.select) { return (() => router.stores.__store.state); } const select = opts.select; return Solid.createMemo((prev) => { const res = select(router.stores.__store.state); if (prev === undefined) return res; return replaceEqualDeep(prev, res); }); } //# sourceMappingURL=useRouterState.jsx.map