在 svelte 中访问 URL 查询字符串
Access URL query string in svelte
我应该如何从 svelte 访问查询字符串参数?当“?beta”附加到 URL.
时,我希望我的脚本表现不同
我的直觉方法是在精巧的 #if
块中使用标准 URLSearchParams
。
是的,您应该可以使用 URLSearchParams。通常,您可以在纯 JS 中执行的任何操作都可以在 Svelte 脚本标签中执行。
<script>
const urlParams = new URLSearchParams(window.location.search);
const isBeta = urlParams.has('beta');
</script>
{#if isBeta}
<p>This is beta!</p>
{:else}
<p>This is not beta.</p>
{/if}
编辑:上述方法在SvelteKit, which enables server-side rendering by default. In SvelteKit, you should use the page store, which exposes a native URL object.
中无效
<script>
import { page } from '$app/stores';
const isBeta = $page.url.searchParams.has('beta');
</script>
这家商店最近更改为 SvelteKit v1.0.0-next.208,因此引用它的其他答案可能已过时。特别是 $page.query
不再可用,因为它已被 $page.url
取代。
对于专门使用 SvelteKit, a Svelte framework, the page store 的任何人,您可以导入一个 page
对象,从而允许您访问参数 page.query
:
<script>
import { page } from '$app/stores';
let isBeta = page.query.beta;
</script>
{#if isBeta}
<p>This is beta!</p>
{:else}
<p>This is not beta.</p>
{/if}
以下是您在 Svelte Kit 中的操作方法:
<script>
import { page } from '$app/stores'
const email = $page.url.searchParams('email')
</script>
有点旧,window
与服务器端渲染有关,如前所述here:我认为这可能更好:
<script>
import { page } from '$app/stores'
let urlPrams = $page.query.get('beta')
const isBeta = false
if (urlPrams && urlPrams.length > 0) {
const isBeta = true
}
</script>
{#if isBeta}
<p>This is beta!</p>
{:else}
<p>This is not beta.</p>
{/if}
截至 2022 年 6 月:
<script>
import { page } from '$app/stores';
const beta = $page.url.searchParams.get('beta');
</script>
我应该如何从 svelte 访问查询字符串参数?当“?beta”附加到 URL.
时,我希望我的脚本表现不同我的直觉方法是在精巧的 #if
块中使用标准 URLSearchParams
。
是的,您应该可以使用 URLSearchParams。通常,您可以在纯 JS 中执行的任何操作都可以在 Svelte 脚本标签中执行。
<script>
const urlParams = new URLSearchParams(window.location.search);
const isBeta = urlParams.has('beta');
</script>
{#if isBeta}
<p>This is beta!</p>
{:else}
<p>This is not beta.</p>
{/if}
编辑:上述方法在SvelteKit, which enables server-side rendering by default. In SvelteKit, you should use the page store, which exposes a native URL object.
中无效<script>
import { page } from '$app/stores';
const isBeta = $page.url.searchParams.has('beta');
</script>
这家商店最近更改为 SvelteKit v1.0.0-next.208,因此引用它的其他答案可能已过时。特别是 $page.query
不再可用,因为它已被 $page.url
取代。
对于专门使用 SvelteKit, a Svelte framework, the page store 的任何人,您可以导入一个 page
对象,从而允许您访问参数 page.query
:
<script>
import { page } from '$app/stores';
let isBeta = page.query.beta;
</script>
{#if isBeta}
<p>This is beta!</p>
{:else}
<p>This is not beta.</p>
{/if}
以下是您在 Svelte Kit 中的操作方法:
<script>
import { page } from '$app/stores'
const email = $page.url.searchParams('email')
</script>
有点旧,window
与服务器端渲染有关,如前所述here:我认为这可能更好:
<script>
import { page } from '$app/stores'
let urlPrams = $page.query.get('beta')
const isBeta = false
if (urlPrams && urlPrams.length > 0) {
const isBeta = true
}
</script>
{#if isBeta}
<p>This is beta!</p>
{:else}
<p>This is not beta.</p>
{/if}
截至 2022 年 6 月:
<script>
import { page } from '$app/stores';
const beta = $page.url.searchParams.get('beta');
</script>