如何在 Next 13 中启用服务器端渲染?

How to enable Server side rendering in Next 13?

提问人:Kerchik 提问时间:11/13/2023 更新时间:11/13/2023 访问量:24

问:

我是 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 中实现它。

ReactJS 缓存 next.js fetch 服务器端渲染

评论


答: 暂无答案