javascript - 为什么 NextJS 中未定义查询参数?

标签 javascript reactjs next.js

我正在使用Router(Page) 调用页面,并期望页面的变量(页面称为[category].js)在初始页面加载时出现。查询本身在那里,键在那里,但值是“未定义”。在服务器端似乎有一些对 getInitialProps 的调用,其中 2/3 未定义。

react 组件有一个构造函数等。它不是一个功能组件。

这是我当前的 getInitialProps:

Category.getInitialProps = async ({ req, query }) => {
  let authUser = req && req.session && req.session.authUser
  let categoryData = {}
  let categoryItemData = {}
  let category = query.category
  if(category){
    let res = await fetch(url1,
    {
        method: 'POST',
        credentials: 'include',
    })
    categoryData = await res.json();
    let categoryItemsRes =  await fetch(url2, 
        {
            method: 'POST',
            credentials: 'include',
        })
    categoryItemData = await categoryItemsRes.json();
  }

  return { query, authUser, categoryData, categoryItemData }
}

最佳答案

在这一点上这可能是多余的,但我也遇到了这个问题,发现文档解释了这个 here

During prerendering, the router's query object will be empty since we do not have query information to provide during this phase. After hydration, Next.js will trigger an update to your application to provide the route parameters in the query object.


你可以试试这个:
export async function getServerSideProps(ctx) {
  const { id } = ctx.query;
  return {
    props: {
      id,
    },
  };
}
这样它在渲染服务器端时获取查询参数,因此它们立即可用。

关于javascript - 为什么 NextJS 中未定义查询参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57486380/

相关文章:

javascript - 从逻辑表达式创建 AST

typescript - 如何在页面刷新时正确补充 NextJS 中的 Redux 状态?

reactjs - 如何在next js中生成构建文件

javascript - 在上传整个文件之前验证文件扩展名 强大 (node.js)

javascript - 如何使用jquery获取TD点击的行索引

javascript - ElectronJS - 在窗口之间共享 redux 存储?

javascript - ES6 导入和导出是如何工作的?

next.js - 向 API 提交表单时,为每个 HTTP 方法错误导出命名导出

JavaScript 嵌入每天都会变化的视频

reactjs - React-engine 与其他模板引擎对比