首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么getStaticPaths不使用groq和sanity

为什么getStaticPaths不使用groq和sanity
EN

Stack Overflow用户
提问于 2022-03-31 18:26:44
回答 1查看 522关注 0票数 0

我在努力让这件事成功,但它不会.-该死的.

我正试图使用下一个js和理智的io在一起,我没有运气。

如果有人能给我指明正确的方向,我会很高兴的。

我尝试了许多不同的方法来避免我所犯的错误。

代码语言:javascript
复制
import {groq} from 'next-sanity'
import {getClient} from '../lib/sanity.server'




export const getStaticPaths = async () => {

  const query =  groq`
  *[_type == "page"]{
    _id,
    title,
    slug
    
  }
  
  
  
  `;

  const pages = await getClient().fetch(query)

  const paths = pages.map(page => {

    return{
      params: { slug: page.slug.current}
    }
  })

  return{
    paths,
    fallback: false
  }



}

export const getStaticProps = async (context) => {

  const slug = context.params.slug
const queryTwo =  groq`
  *[_type == "page" && slug.current == ${slug}}]{
    _id,
    title,
    slug
    
  }
  
  `;

  const data = await getClient().fetch(queryTwo)




  return{
    props: {page: data }
  }



}

export default function pageTemplate({page}) {


return(
    <h1>{page.title}</h1>
   


)


}

从我的代码中可以看出,我不是专家,但我以前从未遇到过这样的问题。

我所犯的错误是

ClientError:预期的‘]以下表达式

此错误发生在生成页面时。任何控制台日志都将显示在终端窗口中。

解决这个问题的方法如下,我终于明白了。

代码语言:javascript
复制
import {groq} from 'next-sanity'
import {getClient} from '../lib/sanity.server'




export const getStaticPaths = async () => {

  const query =  groq`*[_type == "page"]`;

  const pages = await getClient().fetch(query)

  // const paths = pages.map(page => {

  //   return{
  //     params: { slug: page.slug.current}
  //   }
  // })

  const paths = Object.keys(pages).map((key) => {
    const page = pages[key]

    return{
      params: {slug: page.slug.current}
    }
  })

  return{
    paths,
    fallback: false
  }



}

export const getStaticProps = async (context) => {

  const {slug = ''} = context.params
const queryTwo =  groq`
  *[_type == "page" && slug.current == ${slug}}{
    _id,
    title,
    slug
    
  }
  
  `;

  const data = await getClient().fetch(`
  *[_type == "page" && slug.current == $slug][0]
`, { slug })




  return{
    props: {page: data }
  }



}

export default function pageTemplate({page}) {


return(
    <h1>{page.title}</h1>
   


)


}
EN

回答 1

Stack Overflow用户

发布于 2022-04-20 18:06:24

嗨,盖伊,我只想给你发我的答案!

几个小时后,我的头撞在墙上,我终于明白了。

代码如下,复制和粘贴将工作:)

代码语言:javascript
复制
import {groq} from 'next-sanity'
import {getClient} from '../lib/sanity.server'




export const getStaticPaths = async () => {

  const query =  groq`*[_type == "page"]`;

  const pages = await getClient().fetch(query)

  // const paths = pages.map(page => {

  //   return{
  //     params: { slug: page.slug.current}
  //   }
  // })

  const paths = Object.keys(pages).map((key) => {
    const page = pages[key]

    return{
      params: {slug: page.slug.current}
    }
  })

  return{
    paths,
    fallback: false
  }



}

export const getStaticProps = async (context) => {

  const {slug = ''} = context.params
const queryTwo =  groq`
  *[_type == "page" && slug.current == ${slug}}{
    _id,
    title,
    slug
    
  }
  
  `;

  const data = await getClient().fetch(`
  *[_type == "page" && slug.current == $slug][0]
`, { slug })




  return{
    props: {page: data }
  }



}

export default function pageTemplate({page}) {


return(
    <h1>{page.title}</h1>
   


)


}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71697477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档