在页面路由器中,您可以创建一个getStaticProps函数,然后将props馈送到组件函数中。getStaticProps依次获得请求和响应对象的参数,因此您可以从它们向页面传递所需的任何信息。在应用程序路由器中,不再有getStaticProps函数:你只需要从组件函数中获取数据。然而,组件函数 * 没有 * 得到请求/响应的传递,所以现在似乎不可能访问它们。在最新版本的Next.js中,是否有其他机制来访问请求/响应对象?
getStaticProps
yebdmbv41#
根据jonrsharpe的评论,看起来不再有一种方法可以从页面访问请求。您可以使用API路由(它确实会获得完整的请求),或者您可以使用headers和cookies函数(来自next/headers包)来访问请求的这些部分。但是似乎不可能从请求中获得任何其他信息,或者获得请求对象本身。
headers
cookies
next/headers
zzzyeukh2#
如果需要访问请求和响应对象,则应使用服务器端呈现方法,如getServerSideProps。但是,getServerSideProps在_app.js级别不可用,因为它被设计为处理单个页面。要在应用级别访问请求/响应对象或执行服务器端逻辑,您可以考虑在pages/api目录中创建一个API路由,在该目录中可以直接访问req和res对象:
getServerSideProps
_app.js
pages/api
req
res
export default function handler(req, res) { // You have access to the request and response objects here }
字符串这是唯一想到的事情,否则你可能需要重新思考你的方法。
2条答案
按热度按时间yebdmbv41#
根据jonrsharpe的评论,看起来不再有一种方法可以从页面访问请求。
您可以使用API路由(它确实会获得完整的请求),或者您可以使用
headers
和cookies
函数(来自next/headers
包)来访问请求的这些部分。但是似乎不可能从请求中获得任何其他信息,或者获得请求对象本身。zzzyeukh2#
如果需要访问请求和响应对象,则应使用服务器端呈现方法,如
getServerSideProps
。但是,getServerSideProps
在_app.js
级别不可用,因为它被设计为处理单个页面。要在应用级别访问请求/响应对象或执行服务器端逻辑,您可以考虑在
pages/api
目录中创建一个API路由,在该目录中可以直接访问req
和res
对象:字符串
这是唯一想到的事情,否则你可能需要重新思考你的方法。