TanStack Router 路由匹配

路由匹配遵循一致且可预测的模式。本指南将解释路由树是如何进行匹配的。

当 TanStack Router 处理你的路由树时,你的所有路由都会被自动排序,以便优先匹配**最具体(most specific)**的路由。这意味着无论你定义路由树的顺序如何,路由总是会按照以下顺序进行排序:

  1. 索引路由 (Index Route)

  2. 静态路由 (Static Routes)(从最具体到最不具体)

  3. 动态路由 (Dynamic Routes)(从最长到最短)

  4. Splat/通配符路由 (Splat/Wildcard Routes)

考虑以下的伪路由树(定义时的顺序):

bash 复制代码
Root
  - blog
    - $postId
    - /
    - new
  - /
  - *
  - about
  - about/us

排序后,这个路由树将变为:

scss 复制代码
Root
  - /          (根索引路由,优先级最高)
  - about/us   (最具体的静态路由)
  - about      (较短的静态路由)
  - blog       (静态路由)
    - /        (Blog 的索引路由)
    - new      (Blog 下的静态路由)
    - $postId  (Blog 下的动态路由)
  - * (Splat/通配符,优先级最低)

这个最终顺序代表了基于特异性(specificity)进行路由匹配的顺序。

使用上述排序后的路由树,让我们来看看几个不同 URL 的匹配过程:

  • /blog

    bash 复制代码
    Root
      ❌ /
      ❌ about/us
      ❌ about
      ⏩ blog
        ✅ /
        - new
        - $postId
      - *
  • /blog/my-post

    bash 复制代码
    Root
      ❌ /
      ❌ about/us
      ❌ about
      ⏩ blog
        ❌ /
        ❌ new
        ✅ $postId
      - *
  • /

    markdown 复制代码
    Root
      ✅ /
      - about/us
      - about
      - blog
        - /
        - new
        - $postId
      - *
  • /not-a-route

    markdown 复制代码
    Root
      ❌ /
      ❌ about/us
      ❌ about
      ❌ blog
        - /
        - new
        - $postId
      ✅ *
相关推荐
天意pt1 天前
Blog-SSR 系统操作手册(v1.0.0)
前端·vue.js·redis·mysql·docker·node.js·express
遗憾随她而去.1 天前
Webpack5 高级篇(一)
前端
疯狂踩坑人1 天前
【React 19 尝鲜】第一篇:use和useActionState
前端·react.js
毕设源码-邱学长1 天前
【开题答辩全过程】以 基于VUE的打车系统的设计与实现为例,包含答辩的问题和答案
前端·javascript·vue.js
用户39051332192881 天前
JS判断空值只知道“||”?不如来试试这个操作符
前端·javascript
海云前端11 天前
前端面试必问 asyncawait 到底要不要加 trycatch 90% 人踩坑 求职加分技巧揭秘
前端
wuk9981 天前
梁非线性动力学方程MATLAB编程实现
前端·javascript·matlab
XiaoYu20021 天前
第11章 LangChain
前端·javascript·langchain
霉运全滚蛋好运围着转1 天前
启动 Taro 4 项目报错:Error: The specified module could not be found.
前端
cxxcode1 天前
前端模块化发展
前端