无法从getStaticProps、Nextjs/Apollo/Graphql访问getStaticPaths的多个参数

ilmyapht  于 2022-11-29  发布在  其他
关注(0)|答案(1)|浏览(128)

下面你可以检查代码。我尝试使用ID来识别单个内容和使用标题的链接,
当我控制台记录时参数.title
控制台:Android分页高级代码实验室
但是,
当我尝试控制台日志www.example.com时params.id,
控制台:未定义
我需要访问getStaticProps中的两个参数,以便使用所需的确切数据。
我确实通过传递上下文和使用www.example.com尝试了上下文context.params.id但结果是一样的。
请阅读下面的代码并帮助我!
下面是getStaticPaths的代码:

export async function getStaticPaths(){

  const { data } = await client.query({
    query: gql`
    query {
      postContents{
        data{
          attributes{
              post_card{
                data{
                  id
                  attributes{
                    TitleForLink
                  }
                }
              }
          }
        }
      }
    }
    `
  })
  
  const paths = data.postContents.data.map((item)=> {
    return {
      params: { 
        id: item.attributes.post_card.data.id.toString(), 
        title: item.attributes.post_card.data.attributes.TitleForLink.toString(), 
      }
    }
  })

  return {
    paths,
    fallback: false,
  }

}

getStaticProps的代码如下:

export async function getStaticProps({params}){
 
  const { data } = await client.query({
    query: gql`
    query {
      postCards{
        data{
          id
          attributes{
            post_content{
              data{
                id
                attributes{
                  Title
                  Description
                }
              }
            }
          }
        }
      }
    }
    `
  })
  console.log(params.id)
  return {
    props: {
      content: data.postCards.data,
    }
  }
}
iszxjhcz

iszxjhcz1#

getStaticPaths函数应返回一个带有paths参数的对象,该参数确定哪些路径将被预渲染only,如果配置了i18,则可以传递 locale 等附加属性。
因此,您需要在getStaticProps函数中进行另一次提取。

相关问题