@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
25 lines (24 loc) • 894 B
JavaScript
import { useRouter } from "./useRouter.js";
import { replaceEqualDeep } from "@tanstack/router-core";
import * as Solid from "solid-js";
import { isServer } from "@tanstack/router-core/isServer";
//#region src/useRouterState.tsx
function useRouterState(opts) {
const contextRouter = useRouter({ warn: opts?.router === void 0 });
const router = opts?.router || contextRouter;
if (isServer ?? router.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 === void 0) return res;
return replaceEqualDeep(prev, res);
});
}
//#endregion
export { useRouterState };
//# sourceMappingURL=useRouterState.js.map