由于其高级功能,我最近从页面路由器过渡到应用程序路由器。然而,我遇到了一个困境,对SSR的实现和数据获取感到困惑。
文档建议,我们可以使用旧的 fetch 函数以及诸如“{cache: 'no-store'}”之类的附加参数来简单地获取数据,而不是使用 getServerSideProps() 或类似的方法。但是,我不确定如何创建一个通用辅助函数来获取可在所有页面上使用的 GraphQL 数据。
Next.js 建议不要在组件内使用钩子,因为组件默认是 SSR。要利用挂钩,建议在组件中包含“使用客户端”。但是,如果我们的目标是以 SSR 的方式获取数据,然后将其存储在钩子中,那么由于在组件内使用了“use client”,获取的数据是否仍然保持其 SSR 特性?
如果您编写一个函数来以 SSR 的形式获取数据以及存储数据的钩子,那就更好了。非常感谢您的帮助。先感谢您。
这是我在上一页路由器的应用程序中使用的辅助函数。
<pre>
export async function storefront(params) {
const response = await fetch(process.env.NEXT_PUBLIC_API_URL, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Another-Property": "Something here", },
body: JSON.stringify({ params }),
});
return response.json();
}
</pre>
Run Code Online (Sandbox Code Playgroud)