【发布时间】:2020-07-22 21:41:46
【问题描述】:
简介
我正在使用 next.js 构建一个应用程序。使用其静态站点生成。由于某种原因,getStaticProps 中的 params 对象为空。我已经阅读了过去几个小时的示例和停靠站,但看不出原因。也许有更多经验的人可以发现问题。
/pages/projects/[id].js
export async function getStaticPaths() {
return {
paths: [
{ params: { id: '1' } },
],
fallback: false
};
}
export async function getStaticProps({params}) {
console.log(params); // params is just an empty object
const { data: projectData } = await axios(`${CMS_URL}/projects/${params.id}`);
console.log(projectData);
return {
props: {
...projectData,
}
};
}
export default function ProjectDetailPage(props) { ...
next.config.js
...
exportPathMap: async () => {
const paths = {
'/': { page: '/' },
'/blog': { page: '/overview' },
};
const { data: projectsData } = await axios(`${apiUrl}/projects`);
projectsData.forEach(project => {
paths[`/projects/${project.id}`] = { page: '/projects/[id]', query: { id: project.id } };
});
console.log(paths);
/*
{
'/': { page: '/' },
'/blog': { page: '/overview' },
'/projects/1': { page: '/projects/[id]', query: { id: 1 } }
}
*/
return paths;
}
...
问题
我添加了正确的文件夹结构和exportPathMap。还将静态路径和道具添加到我的组件中。我不明白为什么 params 对象是空的。你能告诉我为什么它不起作用吗?
【问题讨论】:
标签: javascript reactjs next.js server-side-rendering