SvelteKit load 函数中的空参数

SvelteKit load 函数中的空参数

问题描述

我正在尝试在 SvelteKit 中构建一个艺术作品集,遵循 SvelteKit 教程。我有一个名为 art/ 的页面,其中有一个名为 [collections]/ 的子目录,用于存放不同的艺术作品集合。

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

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:无法读取未定义的属性(title)

我相信这个问题可以追溯到params变量。 当我从+page.server.js文件中删除params.id并直接用数据中的一个示例替换,例如'as-lost',它按预期工作,如下图所示(尽管每个集合显示相同的内容)。 当我在页面文件的脚本部分添加console.log(JSON.stringify(data))时,它显示params对象为空。

我在这里做错了什么?我已经尝试按照教程的每一步操作,但仍然无法正常工作。请帮忙解决。

解决方案

如果你在路由路径中使用[collections],你必须使用params.collections。 (或许将其改为单数形式)

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程