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

如何在SvelteKit的load函数中实现动态查询适配Strapi过滤参数

解决思路

  • 修复URL参数获取逻辑
    page.query 是URLSearchParams接口实例,不能直接通过属性名读取参数,需要使用get()方法获取对应参数值:
// 替换原来的 const term = page.query.term;
const term = page.query.get('term');
  • 优化请求参数编码
    拼接请求链接时对搜索词进行URL编码,避免特殊字符导致接口请求异常:
const data = await fetch(`${url}?categories.name_contains=${encodeURIComponent(term)}`);
  • 确保参数变化时触发load函数重新执行
    如果点击同路由不同参数的链接没有触发load更新,可将普通a标签跳转替换为SvelteKit提供的goto方法,强制刷新页面数据:
    首先修改PostList组件逻辑:
<script>
    import { goto } from '$app/navigation';
    export let post;

    function handleCategoryClick(name) {
        goto(`/search?term=${encodeURIComponent(name)}`, { invalidateAll: true });
    }
</script>
<!-- 原有代码省略,修改分类链接部分 -->
{#each post.categories as category (category.id)}
    <a role="button" on:click|preventDefault={() => handleCategoryClick(category.name)}>
        {category.name}
    </a>
{/each}
  • 可选优化:增加空参数兜底逻辑
    在load函数中增加term为空的判断,避免无效请求:
export async function load({ page, fetch }) {
    const term = page.query.get('term');
    // 无搜索词时可根据业务需求返回全量数据或者抛出提示
    if (!term) {
        return { props: { posts: [] } };
    }
    // 原有请求逻辑保持不变
}

内容的提问来源于stack exchange,提问作者Ricardo de Paula

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:18:03