reactjs - Next.js getServerSideProps | 函数的奇怪行为
问题描述
函数的奇怪行为。有时服务器请求的地址错误
console.log ({url: context.req.url})
并打印到控制台
{url: '/_next/data/development/en-gb/b.json?culture=en-gb'}
这破坏了与当前请求地址相关的所有逻辑。为什么会发生这种情况以及如何解决它
我正在为标准函数使用函数包装器
export function getServerSidePropsWithPageInitData(options: PropsOptions = {}) {
//redux-wrapper
return wrapper.getServerSideProps((store) => {
const { getState, dispatch } = store;
return async function(context: GetServerSidePropsContext) {
console.log({ url: context.req.url }) // {url: '/_next/data/development/en-gb/b.json?culture=en-gb'}
return await getPageInitialData(serverContext);
// some logic and return object look like
// { props: {key: value } }
// or redirect
// redirect: {
// permanent: false,
// destination: destination
// }
};
})
}
解决方案
使用resolvedUrl
属性:
resolvedUrl
:请求 URL 的规范化版本,去除客户端转换的 _next/data 前缀并包含原始查询值。
更多:https ://nextjs.org/docs/basic-features/data-fetching#getserversideprops-server-side-rendering
推荐阅读
- linux - 在 Kubernetes 环境中设置 read_ahead_kb
- cocoapods - 如何将 Azure 管道用于私有 pod?
- azure-sql - Azure SQL 如何将其他用户添加到现有登录名
- java - 等待更改直到执行完成并等待下一次执行直到更改完成
- c# - 如何使用 C# 删除带有 EventRecordID 的事件日志源
- paypal - PayPal 自定义窗口弹出
- c# - 使用 .sys 驱动程序 c# 读取受保护的程序内存
- docusignapi - DocuSign API - 授权码授予流程刷新问题
- javascript - ant 设计进度条。使用台阶可防止全宽
- javascript - 如何在html页面上显示从函数返回的数组项