React Router 6 自定义路径匹配测试

react router 6 custom path match test

我在非 React 应用程序中编写 React 应用程序,我无法控制我的应用程序的相对路径(例如可能是 foo.com/bar/my-react-app)。因此,要求是将路由与 URL 的末尾匹配(这是安全的,因为只有当用户导航到我的 React 应用程序的路由时才会加载 React js 文件,因此不会发生冲突)。

根据我的检查,router-router v6 中 Route 的路径检查不灵活或不可配置,但在我的情况下,我需要一个自定义检查,在字符串路由的末尾。

例如,下一项检查就可以解决问题:

前缀是不可能的

<Route path="*/admin" element={<UserApp />} />

自定义函数也不行

<Route path={(route)=>route.endsWith("admin")} element={<UserApp />} />

我开始查看源代码,他们主要使用 <string>.startsWith 并且没有公开很多自定义选项,所以我来到这里找专家,然后浪费了几个小时尝试重新创建路径匹配行为低级组件。

顺便说一下,BrowserRouter basename 属性对我也没有帮助,因为我无法保证 URL+ 将安装我的应用程序的路由,因此检查必须依赖位置字符串的末尾。

所以,有一种简单的方法来创建带有自定义路径验证的路由吗?

对于遇到我这种情况的任何人 - v6 的灵活性要差得多,因为它不支持 Routepath-to-regexp path matches nor custom render method... 所以 Route path="*/admin" 开箱即用在 v5

我认为他们应该把它留在 API 中。迁移回 v5 对我来说微不足道并解决了问题。