Next.js 您应该如何使用getServerSideProps在路由转换上执行客户端数据获取?
Next.js 9.3引入了Next.js 您应该如何使用getServerSideProps在路由转换上执行客户端数据获取?,next.js,Next.js,Next.js 9.3引入了getServerSideProps。现在,它在报告中说: 如果您使用的是Next.js 9.3或更新版本,我们建议您使用getStaticProps或getServerSideProps而不是getInitialProps 问题是:getInitialProps不仅仅在服务器端提供道具。它也在客户端上运行,并在路由转换时提供道具。初始服务器渲染后,如果路由发生更改,getInitialProps将在客户端上运行。那么,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。不知道我怎么会在文件里漏掉这些。谢谢。