useMatch
编辑此页面useMatch
接收一个返回路径的访问器,并创建一个 Memo,如果当前路径与提供的路径匹配,则返回匹配信息。
用于确定给定路径是否与当前路由匹配。
const match = useMatch(() => props.href);
return <div classList={{ active: Boolean(match()) }} />;
作为第二个参数,useMatch
还接受一组 MatchFilters
。
这些过滤器允许进行更细粒度的检查。
这些过滤器与 <Router>
本身使用的相同,它们接受字符串数组或正则表达式。此外,还有一个 boolean
选项用于仅匹配具有或不具有 HTML 扩展名的路由。
const filters: MatchFilters = { parent: ["mom", "dad"] id: /^\d+$/, withHtmlExtension: (v: string) => v.length > 5 && v.endsWith(".html")};
最后,通过在参数名称末尾添加 ?
,可以将任何参数设置为可选。
const isReference = useMatch(() => "/:project?/reference/*?", { project: ["solid-router", "solid-meta", "solid-start"], });
上述检查将匹配:
/reference/solid-router/reference/solid-meta/reference/solid-start/reference
/reference/.../solid-router/reference/.../solid-meta/reference/.../solid-start/reference/...