【问题标题】:Problem fetching data in react using getStaticProps使用 getStaticProps 在反应中获取数据时出现问题
【发布时间】:2021-11-20 07:40:07
【问题描述】:

我目前正在尝试使用 getStaticProps() 函数在我的 Next.js 项目中获取一些数据,但我继续收到此错误:

TypeError: 无法读取未定义的属性“地图”

我的代码如下所示:

export const getStaticProps = async () => {
    const data = [
        {
            "id": 1,
            "question": "Lorem ipsum dolor sit amet consectetur adipisicing elit.",
            "answer": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Iste magni at magnam placeat. Non, saepe?"
        },
        {
            "id": 2,
            "question": "Lorem ipsum dolor sit amet consectetur adipisicing elit.",
            "answer": "Lorem ipsum dolor sit amet consectetur adipisicing elit. Iste magni at magnam placeat. Non, saepe?"
        }
    ]
    return {
        props: {
            questions: data
        }
    }
}

export default function FAQ({ questions }) {
    return (
        <div className="p-8 grid bg-blanco" >
            <div className="grid place-content-center text-center mt-10 md:mt-0" >
                <h1 className="text-2xl text-gun-rose-700 font-bold" >¿Tiene preguntas? Mira aquí</h1>
                <h3 className="text-gun-rose-300 mt-4 max-w-2xl" >Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt, suscipit. Aliquid molestias eveniet ullam? Dolores, minus? Perspiciatis neque voluptates iste!</h3>
            </div>
            {questions.map(q => (
                <div className="" key={q.id}>
                    <h3 className="">{q.question}</h3>
                    <p className="">{q.answer}</p>
                </div>
            ))}
        </div>
    )
}

任何指导将不胜感激,在此先感谢:)

【问题讨论】:

  • 您的FAQ 组件是页面吗? getStaticProps(和其他数据获取方法)只能从page component(在pages文件夹下)导出。
  • 看来你是对的。是否有任何替代方法可以在组件内进行获取数据调用?
  • 有两种选择:将数据获取移动到页面并将数据向下传递给组件,或者在组件内部的客户端获取数据。

标签: reactjs next.js getstaticprops


【解决方案1】:

这可能是一个异步问题,无法立即获得问题。尝试在问题开头使用空检查。

export default function FAQ({ questions }) {
    return (
        <div className="p-8 grid bg-blanco" >
            <div className="grid place-content-center text-center mt-10 md:mt-0" >
                <h1 className="text-2xl text-gun-rose-700 font-bold" >¿Tiene preguntas? Mira aquí</h1>
                <h3 className="text-gun-rose-300 mt-4 max-w-2xl" >Lorem ipsum dolor sit amet consectetur adipisicing elit. Sunt, suscipit. Aliquid molestias eveniet ullam? Dolores, minus? Perspiciatis neque voluptates iste!</h3>
            </div>
            {questions && questions.map(q => (
                <div className="" key={q.id}>
                    <h3 className="">{q.question}</h3>
                    <p className="">{q.answer}</p>
                </div>
            ))}
        </div>
    )
}

编辑 1:

getStaticProps 方法只能在页面的顶级组件上使用stated in the caveats

解决方法是将getStaticProps 方法移动到顶级页面组件。我已经在沙盒中进行了演示,因为文件夹结构非常重要,link here

【讨论】:

  • 我现在已经完成了这个修复,它不再给我一个错误,但是无论如何这些项目都没有被提取。
  • 我已经更新了答案 - 我希望 - 为你修复。
  • 我也试过了。似乎这个没有在 h3 & p 标签中给我任何数据
  • 沙盒演示正在运行,实际应用中还有哪些其他移动部件可能导致错误?
猜你喜欢
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 2019-12-31
  • 1970-01-01
  • 2020-03-26
  • 2019-06-29
  • 2020-01-30
  • 1970-01-01
相关资源
最近更新 更多