首页 > 解决方案 > 根据 Next.js 中的查询字符串值获取数据

问题描述

getInitialProps提出了两个要求。

如果查询参数键是法人,现在我想再做一个。例如,如果 URL 是https://www.example.com.br/?legal-person,则在一个 URL 中获取数据,否则在另一个 URL 中获取数据。

我可以看到 Next.js 有返回这个的查询对象,我什至尝试使用 if,但它没有像下面那样工作。它显示错误:

此条件将始终返回“false”,因为“ParsedUrlQuery”和“string”类型没有重叠。

但我也不知道我试图这样做是否是最好的方法。

CompareLoans.getInitialProps = async ({query}) => {

  const loanTypesRes = await fetch(`${process.env.BFF_API}/api/loan-types/`)
  const loanTypesResJson = await loanTypesRes.json()

  if (query === 'legal-person') {
   const initialLoans = await fetch(`${process.env.BFF_API}/api/loans-legal-person/initial`)
   const initialLoansJson = await initialLoans.json()

  } else {
   const initialLoans = await fetch(`${process.env.BFF_API}/api/loans/initial`)
   const initialLoansJson = await initialLoans.json()
  }
  
  return {loanTypes: loanTypesResJson, initialLoans: initialLoansJson}

}

标签: javascriptnext.jsquery-string

解决方案


由于错误提到query的是 type 的对象ParsedUrlQuery,它不是您可以直接比较的字符串'legal-person'

您可以做的是检查对象中legal-person是否存在query

CompareLoans.getInitialProps = async ({ query }) => {
    // Custom logic here

    if (Object.keys(query).includes('legal-person')) {
        // Do something when `legal-person` is in the query string
    } else {
        // Do something else
    }

    // More custom logic here
}

推荐阅读