javascript - Svelte 从 JSON 中选择特定对象数据

标签 javascript json svelte sveltekit

我需要帮助基于 Svelte 中的名称值访问 JSON 文件中的特定对象。
我使用 JSON 作为数据源,并且能够将其拉入我的页面并循环遍历它。
JSON 看起来像这样:


[
    {
      "id": 1,
      "title": "Project 1",
      "body": "Project 1 text"
    },
    {
      "id": 2,
      "title": "Project 2",
      "body": "Project 2 text"
    }
  ]

我像这样访问 JSON:
<script context="module">
    export const load = async ({ fetch }) => {
        const res = await fetch("https://amarton.github.io/amcom-portfolio-svelte/static/port.json");
        const projects = await res.json();
        return {
            props: {
                projects,
            }
        }
    }
 
</script>

<script>
    export let projects; 
</script>

然后循环并显示如下:
       {#each projects as project}
            <h2>{project.title}</h2>
            <p>{project.body}</p>
        {/each}
我希望能够根据我分配的 ID 访问对象。例如,我如何抓取 id 为 2 的对象并在我的页面中显示其标题和正文?
抱歉,如果这是一个非常基本的问题,非常感谢您提供的任何帮助。

最佳答案

你不会使用 {#each}而是在 JS 中获取项目。例如。像这样:

$: project = projects.find(p => p.id == '2');
您现在可以引用 project就像没有循环一样。
如果您想要动态选择,您可以绑定(bind) select像这样的 ID 元素:
<script>
    export let projects = [];

    let id = '';
    $: project = projects.find(p => p.id == id);
</script>

<label>
    Project
    <select bind:value={id}>
        <option />
        {#each projects as p}
            <option value={p.id} label={p.title} />
        {/each}
    </select>
</label>

{#if project}
    <h2>{project.title}</h2>
    <p>{project.body}</p>
{/if}
REPL
响应式(Reactive)语句 ( $: ) 确保 project如果 projects 则更新或 id变化。

关于javascript - Svelte 从 JSON 中选择特定对象数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72969271/

相关文章:

javascript - 如何在 Capybara 中重新抓取页面?

javascript - 是否可以使用 javascript 更改实际的 css 文件?

javascript - 取消选中所有输入后检查所有输入

javascript - Javascript原型(prototype)的功能范围

javascript - Svelte:如何将 Action 传递给组件?

javascript - 单击链接时停止拖动事件

java - 使用 Apache 通用配置从字符串创建 JSON 配置

javascript - JSON.parse — "unexpected token"构造的 JSON 字符串

svelte - 如何仅在第一页访问时运行动画

javascript - svelte electron 中的 JS 文件中不能需要 Node 模块