如何在 Sapper 中创建带有可选参数的路由?
How do you create routes with optional parameters in Sapper?
假设我有一条 /foo
路线。但有时人们会使用语言参数来点击 /foo
:/fr/foo
。有时他们可能会用一种语言和一个国家来打它:/ca/fr/foo
所以我需要一个像
这样的路由 table
[country]/[language]/foo
[language]/foo
/foo
全部指向同一页面。
我应该像这样创建一棵树吗?
src/routes
└── [country]
└── [language]
└── foo.svelte
如果这是答案,那么我该如何将 [language]/foo
定向到 [country]/[language]/foo
?
可选参数尚不支持,但你可以 几乎 用 'rest routes' 伪造它(我刚刚意识到还没有记录 ♂️) — routes/[...parts]/foo.svelte
将使用包含前面段的 page.params.parts
数组呈现 foo.svelte
。
不幸的是,这与 /foo
不匹配,但可以说应该如此。我提出了一个问题:https://github.com/sveltejs/sapper/issues/765
在我的例子中,我需要 /dashboard/reset/TOKEN/ID 路线。我使用以下结构使其工作:
[acool@localhost cool-sapper-project]$ tree src/routes/
src/routes/
├── dashboard
│ ├── reset
│ │ └── [...parts].svelte
以上内容将使 TOKEN 和 ID 参数在您的页面 params
中可用:
<script context="module">
export async function preload({ params }, session) {
console.log(JSON.stringify(params));
}
</script>
输出:
{"parts":["2fd4e1c67a2d28fced849ee1bb76e7391b93eb12","1"]}
祝你好运!
假设我有一条 /foo
路线。但有时人们会使用语言参数来点击 /foo
:/fr/foo
。有时他们可能会用一种语言和一个国家来打它:/ca/fr/foo
所以我需要一个像
这样的路由 table[country]/[language]/foo
[language]/foo
/foo
全部指向同一页面。
我应该像这样创建一棵树吗?
src/routes
└── [country]
└── [language]
└── foo.svelte
如果这是答案,那么我该如何将 [language]/foo
定向到 [country]/[language]/foo
?
可选参数尚不支持,但你可以 几乎 用 'rest routes' 伪造它(我刚刚意识到还没有记录 ♂️) — routes/[...parts]/foo.svelte
将使用包含前面段的 page.params.parts
数组呈现 foo.svelte
。
不幸的是,这与 /foo
不匹配,但可以说应该如此。我提出了一个问题:https://github.com/sveltejs/sapper/issues/765
在我的例子中,我需要 /dashboard/reset/TOKEN/ID 路线。我使用以下结构使其工作:
[acool@localhost cool-sapper-project]$ tree src/routes/
src/routes/
├── dashboard
│ ├── reset
│ │ └── [...parts].svelte
以上内容将使 TOKEN 和 ID 参数在您的页面 params
中可用:
<script context="module">
export async function preload({ params }, session) {
console.log(JSON.stringify(params));
}
</script>
输出:
{"parts":["2fd4e1c67a2d28fced849ee1bb76e7391b93eb12","1"]}
祝你好运!