Ale*_*ffe 7 typescript contentful next.js
我认为这是一个非常普通的问题,但我在谷歌上找不到任何东西。
我正在学习 NextJs(使用 TypeScript)并且我有一个站点成功地使用动态路由、SSR 和增量再生,所有设置和部署到 Vercel。这是我的动态路由处理程序中的GetStaticProps
和GetStaticPaths
代码示例:
export const getStaticPaths: GetStaticPaths = async () => {
const routes = new CmsHelper().GetRoutes();
const paths = (await routes).items.map((item, index, items) => {
return item.fields.urlPath;
})
return {
paths: paths,
fallback: 'blocking',
};
}
export const getStaticProps: GetStaticProps = async (context) => {
const urlParts = context.params?.url as string[] || [];
const urlPath = `/${urlParts.join('/')}`;
const article = await new CmsHelper().GetArticle(urlPath);
return {
props: {
article
},
revalidate: 10,
}
}
Run Code Online (Sandbox Code Playgroud)
如果我请求在构建时间后在 cms 中发布的新路径,它会成功地在服务器上重新生成并返回页面。
到现在为止还挺好。
但是,如果我在我的 CMS 中取消发布路由......它仍然由应用程序返回,除非我重建和重新部署(或以其他方式导致进程在开发中重新启动)。
所以我的问题是:如何动态地使 NextJs 从其 GetStaticPaths 缓存中删除动态路由?
我知道GetStaticProps
由于revalidate
配置的原因,最多每 10 秒调用一次。但据我所知,GetStaticPaths
只有当请求来自当前未缓存的路由时才会被调用(?)
换句话说,对于与无头 CMS 的集成,如何在不触发重建/部署的情况下支持使用 NextJs 取消发布或重命名页面?
提前致谢!
我面临着一个类似但不同的问题:部署我的项目从数据生成 URL,但当数据库中的数据更改时我无法添加任何新 URL。
我的问题的关键是我在 getStaticPaths 方法中将后备设置为 false。当我将其设置为 true 时,生产部署开始表现得像我的本地开发构建。
我发现您正在为后备属性传递一个字符串值。您可以尝试使用布尔值,如下所述: https: //nextjs.org/docs/basic-features/data-fetching#the-fallback-key-required
归档时间: |
|
查看次数: |
5822 次 |
最近记录: |