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

Next.js使用getStaticPaths和getStaticProps时datas.id无返回问题求助

问题根因

Array.prototype.filter() 方法返回的是符合筛选条件的元素组成的数组,而非单个对象。你在getStaticProps中使用filter筛选匹配id的条目后,传递给页面组件的datas为数组格式,直接调用datas.id无法读取到属性值,因此页面无内容渲染。

修复方案

方案1:替换筛选方法(推荐)

将getStaticProps中的filter方法替换为find,find会返回第一个符合条件的单个对象,匹配单条数据查询的需求,修改后代码如下:

export const getStaticProps = async (context) => {
    const id = context.params.id;
    // 替换filter为find
    const data = datas.find((mod) => mod.id.toString() === id)
    return {
        props: {
            datas: data
        }
    }
}

方案2:调整数组取值逻辑

如果保留filter方法,需要在组件中读取数组第一项的属性,修改组件代码如下:

export default function Projects({ datas }) {
    return (
        <>
            <h1>
                {datas[0]?.id}
            </h1>
        </>
    )
}
可选优化

建议在组件中增加兜底校验逻辑,避免数据不存在时页面报错崩溃:

export default function Projects({ datas }) {
    if(!datas) return <div>暂无对应数据</div>
    return (
        <>
            <h1>{datas.id}</h1>
            <p>{datas.name}</p>
            <img src={datas.image} alt={datas.name} />
        </>
    )
}

内容的提问来源于stack exchange,提问作者Gustavo Leterio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:57:02