【问题标题】:why getInitialProps return undefined为什么 getInitialProps 返回 undefined
【发布时间】:2022-01-10 19:25:26
【问题描述】:

在我的索引页面中是这样的:

function Index({posts}) {
    console.log(posts);
    return (
        <div>
            Homepage
            {/* {posts && posts.length > 0 && posts.map(post => <h1 key={post._id}>{ post.title}</h1>)} */}
        </div>

    )
}

Index.getInitialProps = async ctx => {
  try {
        const res = await axios({
            method: "GET",
            url: 'https://jsonplaceholder.typicode.com/posts'
        })
      return {posts: res.data}
      
    } catch (error) {
      return  {errorLoading: true}
    }
}

export default Index;

console.log(res.data) 工作成功。但我只得到console.log(posts) undefined。为什么?

【问题讨论】:

  • 您在哪里记录 res.data?表面上看起来不错,假设您是在 nextjs 日志中而不是在浏览器中阅读日志
  • 我是 next.js 的初学者。如何在浏览器中显示您所说的内容?
  • 在这段代码中,如果出现网络错误——axios 引发的异常——那么Index 将被posts: undefined 调用,请检查这是否不是您的情况。将Index 更改为Index({posts, errorLoading}) 并添加console.log(errorLoading)
  • getInitialProps 仅在服务器端渲染运行,而不是在加载页面时在浏览器中运行。你在哪里读日志?在浏览器中,还是在运行服务器的终端中输出 nextjs?
  • 我这样做是他的代码。那里我没有写日志

标签: javascript reactjs next.js server-side-rendering


【解决方案1】:

我使用自定义应用程序。我忘了在 _app.js 中添加 pageProps。在看到https://nextjs.org/docs/advanced-features/custom-app 之后,我修复了这些。谢谢大家帮助我

【讨论】:

    猜你喜欢
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    相关资源
    最近更新 更多