我正试图在SvelteKit中建立一个艺术组合,追随SvelteKit tutorial.我有一个名为art/的页面,它有一个名为[collections]/的子目录,用于存放各种不同的艺术作品Collection .

我临时从一个名为data.js的文件加载数据,该文件具有以下 struct :

export const collections = [
    {
        title: 'Crisis Vision',
        id: 'crisis-vision',
        content: '<p>crisis vision content</p>'
    },

    {
        title: 'From the Garden',
        id: 'from-the-garden',
        content: '<p>from the garden content</p>'
    },
    
    {
        title: 'As Lost Through Collision',
        id: 'as-lost',
        content: '<p>as lost content</p>'
    }
]; 

[collections]/中的+page.server.js文件包含以下内容:

import { error } from '@sveltejs/kit';
import { collections } from '../data.js';

export function load( {params} ) {
    const ret = collections.find((c) => c.id === params.id);
    return { 
        ret 
    };
}

+page.svelte文件包含以下内容:

<script>
    export let data;
    console.log(JSON.stringify(data))
</script>

<h1>{data.ret.title}</h1>
<div>{@html data.ret.content}</div>

当我试着运行这个时,我得到TypeError: Cannot read properties of undefined (reading 'title').

我相信我已经将范围缩小到params变量.当我取出+page.server.js文件中的params.id,并直接用数据中的一个示例替换它时,比如'as-lost',它就会像预期的as shown here那样工作(当然,每个集合都显示相同的内容).当我将console.log(JSON.stringify(data))添加到页面文件的脚本部分时,它显示参数对象为空.

我到底做错了什么?我试着在每一步都遵循教程,但它仍然不起作用.请帮帮忙.

推荐答案

If you use [collections] in the route path, you also have to use params.collections.
(Maybe make that singular)

Javascript相关问答推荐

JavaScript:循环访问不断变化的数组中的元素

如何编辑代码FlipDown.js倒计时?

React Native平面列表自动滚动

当promise 在拒绝处理程序被锁定之前被拒绝时,为什么我们会得到未捕获的错误?

React Code不在装载上渲染数据,但在渲染上工作

如何修复(或忽略)HTML模板中的TypeScript错误?'

为什么!逗号和空格不会作为输出返回,如果它在参数上?

使用JQuery单击元素从新弹出窗口获取值

如何强制Sphinx中的自定义js/css文件始终加载更改而不缓存?

如何在Node.js中排除导出的JS文件

在FAQ Accodion应用程序中使用React useState时出现问题

expo 联系人:如果联系人的状态被拒绝,则请求访问联系人的权限

如何用javascript更改元素的宽度和高度?

FileReader()不能处理Firefox和GiB文件

在Vercel中部署Next.js项目时获取`ReferenceError:未定义文档`

为列表中的项目设置动画

Cherrio JS返回父div的所有图像SRC

谷歌饼图3D切片

调用特定数组索引时,为什么类型脚本不判断未定义

Promise.race()返回已解析的promise ,而不是第一个被拒绝的promise