javascript - 无法从 SvelteKit 中的 API 获取数据

标签 javascript fetch svelte sveltekit

我正在尝试通过从 API 获取来显示我请求的数据。一切正常,除了获取。

这是我的名为 Items.svelte 的组件:

<script>
  let items = [];

  async function load({ fetch }) {
    const url = "../r/api/items/all";
    let res = await fetch(url);

    if (res.ok) {
      return {
        props: {
          items: await res.json(),
        },
      };
    }
    return {
      status: res.status,
      error: new Error(),
    };
  }
</script>

{#each items as item}
  <header>
    <h2>{item.title}</h2>
    <p>{item.body}</p>
  </header>
{/each}

这是App.svelte:

<script>
  import Items from '$lib/Items.svelte';
</script>
    
<Items /> 

我做错了什么?

最佳答案

根据文档---> https://kit.svelte.dev/docs/loading

您缺少 context="module" 脚本部分。应该是:

<script context="module">
    export async function load({ fetch }) {
        let res = await fetch('../r/api/items/all');

        if (res.ok) {
            return {
                props: {
                    items: await res.json()
                }
            };
        }
        return {
            status: res.status,
            error: new Error()
        };
    }
</script>


<script>
    export let items = []
</script>    

{#each items as item}
    <header>
        <h2>{item?.title}</h2>
        <p>{item?.body}</p>
    </header>
{/each}

关于javascript - 无法从 SvelteKit 中的 API 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69075449/

相关文章:

javascript - html canvas - 绘制带动画和数字的圆圈

javascript - 验证动态单选按钮 jQuery

javascript - 调用 jQuery ajax 成功回调之外的函数?

javascript - 如何使用 Promise.allSettled 访问 fetch/http 调用的响应值?

javascript - array.push 后数组元素未定义

Javascript fetch() 故障转移 URL

javascript - 如何检测 AdSense 是否在 JavaScript 中加载了广告?

svelte - 静态适配器不适用于 nginx 和刷新页面

javascript - 从 QML ListView 委托(delegate)调用 JavaScript 对象方法

javascript - 当函数中的变量更改时,不会触发 Svelte react 性