You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Svelte Navigator多查询参数配置问题求助

解决svelte-navigator查询参数路由匹配问题

你不需要修改路由结构,查询参数(?name=xxx这类)不会影响svelte-navigator的路由匹配逻辑——Route的path属性只匹配URL中?之前的路径部分,不管有没有查询参数,只要路径是/就会匹配Homepage,路径是/something就会匹配Something页面。

正确的App组件配置

直接保留你最初的路由结构即可,不需要额外修改:

<main>
  <Router primary={false}>
    <Route path={'/'}>
      <Homepage />
    </Route>
    <Route path={'/something'}>
      Something
    </Route>
    <Route>
      <h3>Default</h3>
    </Route>
  </Router>
</main>

在Homepage中获取查询参数

要拿到name和country参数,只需通过useLocation获取查询字符串,再用URLSearchParams解析即可,修改你的Homepage组件:

<script lang="ts">
  import { useLocation } from 'svelte-navigator'

  const location = useLocation()
  
  // 解析查询参数
  $: searchParams = new URLSearchParams($location.search)
  $: name = searchParams.get('name')
  $: country = searchParams.get('country')

  $: console.log('name:', name, 'country:', country)
</script>

<main>
  <h1>Homepage</h1>
  {#if name}
    <p>Hello, {name}!</p>
  {/if}
  {#if country}
    <p>Your country: {country}</p>
  {/if}
</main>

为什么你之前的配置无效?

你错误地把查询参数当成了路径参数(比如:name匹配的是/john这种路径,而非?name=john),同时嵌套的/*路由打乱了原有的匹配优先级,导致访问/?name=john时路由匹配出现异常,显示了默认页面。

内容的提问来源于stack exchange,提问作者marielle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:03:12