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/...