英文:
Content is not updating until re-deploy nextjs 13 and sanity
问题
Hello,我正在使用 Next.js 13 服务器组件,使用/app目录和Sanity Studio。我的代码看起来像这样:
const Page = async () => {
const query = groq`*[_type == "university"]`;
const data = await sanityClient.fetch(query);
}
每当我在Vercel重新部署我的网站时,前端加载最新更新的数据。但如果我在Sanity Studio上做了一些更改并刷新页面,我只能看到旧的更改。这里有什么帮助吗?谢谢。
英文:
Hello i am using nextjs 13 server components using /app directory and sanity studio. my code looks like this
const Page = async () => {
const query = groq`*[_type == "university"]`;
const data = await sanityClient.fetch(query);
}
every time i re-deploy my site on vercel, my content loads latest updated data on the frontend.
but if i change something on sanity studio and refresh my page, i only see the old changes.
any help here ? thank you
答案1
得分: 5
Seems like you are using Next.js 13 app directory. You may try this out
const Page = async () => {
const revalidate = 60 // 时间间隔
const query = groq`*[_type == "university"]`;
const data = await sanityClient.fetch(query, { next: { revalidate } });
}
英文:
Seems like you are using Next js 13 app directory. You may try this out
const Page = async () => {
const revalidate = 60 //Time interval
const query = groq`*[_type == "university"]`;
const data = await sanityClient.fetch(query, {next: {revalidate}});
}
答案2
得分: 2
In nextjs 13的应用程序目录中,您可以像这样声明一个revalidate
变量:
// page.tsx
export const Page = async () => {
const query = groq`*[_type == "university"]`;
const data = await sanityClient.fetch(query);
}
export const revalidate = 60; // 每60秒重新验证此页面
这会导致您的页面在60秒后变得无效。如果您在60秒后尝试打开页面,页面的缓存将被清除并进行更新。
如果您不希望页面完全静态,请在page.tsx
的第一行插入'use client'
:
// page.tsx
'use client';
export const Page = async () => {
const query = groq`*[_type == "university"]`;
const data = await sanityClient.fetch(query);
}
英文:
In nextjs 13's app directory you are able to declare a revalidate
variable like this:
// page.tsx
export const Page = async () => {
const query = groq`*[_type == "university"]`;
const data = await sanityClient.fetch(query);
}
export const revalidate = 60; // revalidate this page every 60 seconds
This causes your page to get invalid after 60 seconds. If you try to open your page after 60 seconds, the pages cache gets cleared and it will be updated.
If you don't want your page to be static at all, insert a 'use client'
in the first line of your page.tsx;
:
// page.tsx
'use client';
export const Page = async () => {
const query = groq`*[_type == "university"]`;
const data = await sanityClient.fetch(query);
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论