提问人:Kerchik 提问时间:11/13/2023 更新时间:11/13/2023 访问量:24
如何在 Next 13 中启用服务器端渲染?
How to enable Server side rendering in Next 13?
问:
我是 Next 13 语法的新手,在动态路由中启用 SSR 时遇到了问题。这是我的 [id]/page.tsx 文件的样子:
export const dynamic = 'force-dynamic'
const getData = async (id: string): Promise<EducationalInstitution | null> => {
console.log('get data')
try {
const sessionCookie = cookies().get('Custom.Session')?.value;
const sessionData = await getServerSession(authOptions);
const response = await fetch(`${process.env.NEXT_API_URL}/educationalInstitutions/${id}`, {
method: 'GET',
// @ts-ignore
headers: {
'Content-Type': 'application/json',
'Cookie': `Custom.Session=${sessionCookie}`
},
cache: 'no-store'
});
if (!response.ok) {
return null;
}
const responseData = await response.json();
return responseData;
} catch (e: any) {
return null;
}
};
我注意到,如果我尝试通过打开此页面,它只会发出一次getData请求(在第一次渲染时)。之后,即使数据库发生更改,它也会返回缓存的数据。我还试图添加
export const revalidated = 0
但这无济于事。当我使用 ctrl+r 刷新此页面时,我可以在控制台中看到 console.log('get data') 以及 DB 中的新更改,但当我使用 . 导航到此页面时则看不到。
我知道,在以前的版本中,我需要做的就是使用 gerServerSideProps() 函数,如果我想在每个请求上 SSR 页面,但我不明白,如何在 Next 13 中实现它。
答: 暂无答案
评论