Next.js 您应该如何使用getServerSideProps在路由转换上执行客户端数据获取?

Next.js 您应该如何使用getServerSideProps在路由转换上执行客户端数据获取?,next.js,Next.js,Next.js 9.3引入了getServerSideProps。现在,它在报告中说: 如果您使用的是Next.js 9.3或更新版本,我们建议您使用getStaticProps或getServerSideProps而不是getInitialProps 问题是:getInitialProps不仅仅在服务器端提供道具。它也在客户端上运行,并在路由转换时提供道具。初始服务器渲染后,如果路由发生更改,getInitialProps将在客户端上运行。那么,9.3中引入的新方法如何解释这个非常基本的用例呢

Next.js 9.3引入了
getServerSideProps
。现在,它在报告中说:

如果您使用的是Next.js 9.3或更新版本,我们建议您使用
getStaticProps
getServerSideProps
而不是
getInitialProps

问题是:
getInitialProps
不仅仅在服务器端提供道具。它也在客户端上运行,并在路由转换时提供道具。初始服务器渲染后,如果路由发生更改,
getInitialProps
将在客户端上运行。那么,9.3中引入的新方法如何解释这个非常基本的用例呢?

getServerSideProps
getServerSideProps
仅在服务器端运行,从不在浏览器上运行。如果页面使用
getServerSideProps
,则:

当您直接请求此页面时,
getServerSideProps
将在请求时运行,并且此页面将使用返回的props进行预呈现

当您通过next/link(文档)或next/router(文档)在客户端页面转换中请求此页面时,next.js会向服务器发送一个API请求,服务器运行
getServerSideProps
。它将返回包含运行getServerSideProps的结果的JSON,JSON将用于呈现页面

所有这些工作都将由Next.js自动处理,因此只要定义了
getServerSideProps
,就不需要做任何额外的工作

因为

getStaticProps
仅在生成时运行

当在构建时预先呈现带有getStaticProps的页面时,除了页面HTML文件外,Next.js还会生成一个JSON文件,其中包含运行getStaticProps的结果

此JSON文件将用于通过next/link(文档)或next/router(文档)的客户端路由。当您导航到使用getStaticProps预先呈现的页面时,Next.js将获取此JSON文件(在构建时预先计算),并将其用作页面组件的道具。这意味着客户端页面转换不会调用getStaticProps,因为只使用导出的JSON


对于

Yikes。不知道我怎么会在文件里漏掉这些。谢谢。