@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
30 lines • 1.17 kB
JSX
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