Solid router doesnt match route /@:id

Hello, im having an issue with solid router not matching route /@:id properly, it just returns 404 instead.
<Route
path="/@:handle"
component={lazy(
() => import("./routes/profile/index.tsx")
)}
/>
<Route
path="/@:handle"
component={lazy(
() => import("./routes/profile/index.tsx")
)}
/>
3 Replies
Longestlam
Longestlam4w ago
I think the syntax should be
<Route path="/users/:id" component={User} />
<Route path="/users/:id" component={User} />
https://docs.solidjs.com/solid-router/concepts/path-parameters
Path parameters - Solid Router Docs
Documentation for SolidJS, the signals-powered UI framework
Longestlam
Longestlam4w ago
You can use matchFilters to validate the route parameter instead.
import { lazy } from "solid-js";
import { render } from "solid-js/web";
import { Router, Route } from "@solidjs/router";

const User = import("./pages/User");

const filters = {
id: (v: string) => v.startsWith("@"),
};

render(() => (
<Router>
<Route
path="/users/:id"
component={User}
matchFilters={filters}
/>
</Router>
), document.getElementById("app"));
import { lazy } from "solid-js";
import { render } from "solid-js/web";
import { Router, Route } from "@solidjs/router";

const User = import("./pages/User");

const filters = {
id: (v: string) => v.startsWith("@"),
};

render(() => (
<Router>
<Route
path="/users/:id"
component={User}
matchFilters={filters}
/>
</Router>
), document.getElementById("app"));
https://docs.solidjs.com/solid-router/concepts/path-parameters#validating-parameters
Path parameters - Solid Router Docs
Documentation for SolidJS, the signals-powered UI framework
Leafuś
LeafuśOP4w ago
Yes match filters worked Thanks!

Did you find this page helpful?