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 的灵活性要差得多,因为它不支持 Route
的 path-to-regexp path matches nor custom render method... 所以 Route path="*/admin"
开箱即用在 v5
我认为他们应该把它留在 API 中。迁移回 v5 对我来说微不足道并解决了问题。
我在非 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 的灵活性要差得多,因为它不支持 Route
的 path-to-regexp path matches nor custom render method... 所以 Route path="*/admin"
开箱即用在 v5
我认为他们应该把它留在 API 中。迁移回 v5 对我来说微不足道并解决了问题。