Primitives

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/...
报告此页面问题