useMatch
Edit this pageuseMatch takes an accessor that returns the path and creates a Memo that returns match information if the current path matches the provided path.
Useful for determining if a given path matches the current route.
const match = useMatch(() => props.href);
return <div classList={{ active: Boolean(match()) }} />;As a second parameter, useMatch also accepts a group of MatchFilters.
These filteres allow for a more granular check.
The filters are the same used by the <Router> itself and they accept either a an array of strings, or a regular expression. Additionally, there's a boolean option to match a route only if it has, or doesn't have, the HTML extension.
const filters: MatchFilters = { parent: ["mom", "dad"] id: /^\d+$/, withHtmlExtension: (v: string) => v.length > 5 && v.endsWith(".html")};Finally, any parameter can be determined optional by adding a ? at the end of the parameter name.
const isReference = useMatch(() => "/:project?/reference/*?", { project: ["solid-router", "solid-meta", "solid-start"], });The check above will match:
/reference/solid-router/reference/solid-meta/reference/solid-start/reference
/reference/.../solid-router/reference/.../solid-meta/reference/.../solid-start/reference/...