Route Parameters

Working with dynamic route parameters

Route parameters allow you to capture dynamic segments from the URL.

Defining Dynamic Routes

Use :paramName syntax in route paths:

typescript
const router = createRouter({
  routes: [
    { path: '/users/:id', program: userProgram },
    { path: '/posts/:category/:slug', program: postProgram }
  ]
});

Accessing Parameters in Programs

Route parameters are automatically extracted and available via the param expression:

json
{
  "kind": "text",
  "value": { "expr": "param", "name": "id" }
}

Multiple Parameters

For routes with multiple dynamic segments:

json
{
  "version": "1.0",
  "view": {
    "kind": "element",
    "tag": "div",
    "children": [
      { "kind": "text", "value": { "expr": "lit", "value": "Category: " } },
      { "kind": "text", "value": { "expr": "param", "name": "category" } },
      { "kind": "text", "value": { "expr": "lit", "value": ", Slug: " } },
      { "kind": "text", "value": { "expr": "param", "name": "slug" } }
    ]
  }
}

Optional Parameters

Optional parameters can be handled with conditional rendering:

json
{
  "kind": "if",
  "condition": { "expr": "param", "name": "tab" },
  "then": {
    "kind": "text",
    "value": { "expr": "param", "name": "tab" }
  },
  "else": {
    "kind": "text",
    "value": { "expr": "lit", "value": "default" }
  }
}