删除 Nextjs 13 中对generateMetadata的重复处理(使用应用程序路由)
你好,
我在使用 Nextjs 13 的generateMetadata(使用 App Router)时遇到问题。
在 page.js 中,我从 URL 获取 slug 并调用 API 来获取文章内容:
export default async function ArticleDetail({ params }) {
const url = config.API.HOST + 'article/' + params.slug;
let res = await fetch(url,
{
method: "GET",
next: {
revalidate: 100
}
}
);
var article = await res.json();
article = article.data;
...
return (
...
)
}
Run Code Online (Sandbox Code Playgroud)
在这个 ArticleDetail 函数中,我进行了一些处理来获取 html_title、html_description 信息(此信息还用于许多其他函数,而不仅仅是元标记)。
但是,generateMetadata 函数独立于 ArticleDetail 运行,我不知道如何在它们之间共享数据。即使使用全局变量也是不可能的,因为generateMetadata先完成运行,所以它无法获取ArticleDetail的数据。
在Nextjs 的generateMetadata 文档中,它说 fetch …