Vmx*_*xes 5 server-side-rendering next.js next.js13
有没有办法使用 NextJS 13 和新的应用程序目录来获取请求对象(NextRequest)或至少是request URL服务器组件内部(页面和/或布局组件)?
我知道如何在客户端组件中执行此操作,但我想在服务器组件中获取它。
小智 3
据我所知,不可能直接访问服务器组件内的请求。
实际上,您可以next-url使用标头headers().get('next-url'),但它似乎相当不稳定(至少在我的环境中)。
作为解决方法,您可以使用middleware.ts在标头中注入自定义数据,例如:
export async function Middleware(req) {
const requestHeaders = new Headers(req.headers)
requestHeaders.set('x-url', req.nextUrl.url)
return NextResponse.next({
request: {
headers: requestHeaders
}
})
}
Run Code Online (Sandbox Code Playgroud)
然后在您的服务器组件上:
const MyServerComponent = () => {
const url = headers().get('x-url')
// Stuff with the URL
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3153 次 |
| 最近记录: |