Docs
Guide
Route Matching

Route Matching

Route matching은 일관적이고 예측 가능한 패턴을 따릅니다. 이 가이드에서는 라우트 트리가 어떻게 매칭되는지 설명합니다.

TanStack Router가 라우트 트리를 처리할 때, 모든 라우트는 가장 구체적인 라우트를 먼저 매칭하도록 자동으로 정렬됩니다. 이는 라우트 트리를 정의한 순서에 관계없이 항상 다음 순서로 정렬됨을 의미합니다:

  1. 인덱스 라우트
  2. 정적 라우트 (가장 구체적인 것부터 덜 구체적인 것까지)
  3. 동적 라우트 (가장 긴 것부터 짧은 것까지)
  4. Splat/Wildcard 라우트

다음과 같은 라우트 트리를 고려해보세요:

Root
  - blog
    - $postId
    - /
    - new
  - /
  - *
  - about
  - about/us

정렬 후, 이 라우트 트리는 다음과 같이 변경됩니다:

Root
  - /
  - about/us
  - about
  - blog
    - /
    - new
    - $postId
  - *

이 최종 순서는 라우트가 구체성에 따라 매칭되는 순서를 나타냅니다.

이 라우트 트리를 사용하여 몇 가지 다른 URL에 대한 매칭 과정을 따라가 봅시다:

  • /blog
    Root
      ❌ /
      ❌ about/us
      ❌ about
      ⏩ blog
        - $postId
        ✅ /
        - new
      - *
  • /blog/my-post
    Root
      ❌ /
      ❌ about/us
      ❌ about
      ⏩ blog
        ❌ /
        ❌ new
        ✅ $postId
      - *
  • /
    Root
      ✅ /
      - about/us
      - about
      - blog
        - /
        - new
        - $postId
      - *
  • /not-a-route
    Root
      ❌ /
      ❌ about/us
      ❌ about
      ❌ blog
        - /
        - new
        - $postId
      ✅ *

Pathless / Layout Route Matching

매칭 과정에서, 경로 없는(Pathless) / 레이아웃(Layout) 라우트는 평면적인 라우트로 간주됩니다. 경로 없는 라우트의 자식들 중에서 라우트를 찾지 못하면, 매칭은 경로 없는 라우트의 자식들을 벗어나 부모 서브트리의 나머지 부분을 통해 계속 진행됩니다.

NotFoundRoutes and Matching

라우터에 대해 NotFoundRoute를 구성하려는 경우, 이는 routeTree의 일부로 전달되는 것이 아니라 notFoundRoute 옵션으로 전달되어야 합니다. 이는 NotFoundRoute가 매칭 과정에서 고려되지 않으며, 다른 적합한 매칭이 없을 때만 폴백으로 렌더링되기 때문입니다.

NotFoundRoute에 대한 자세한 내용은 Not Found Errors 가이드에서 확인할 수 있습니다.