javascript - Next.js 中的 getInitialProps 没有从服务器获取数据

标签 javascript reactjs axios next.js

我正在关注 Next.js tutorial for fetching data

但与教程不同,我使用的是axios。问题是 getInitialProps 没有得到我想要的数据。

代码如下:

import axios from "axios";
import Link from "next/link";

const Body = props => (
  <div>
    <h1>Shows</h1>
    <ul>
      {props.data.map(({ show }) => (
        <li key={show.id}>
          <Link as={`/p/${show.id}`} href={`/post?title=${show.title}`}>
            <a>{show.name}</a>
          </Link>
        </li>
      ))}
    </ul>
  </div>
);

Body.getInitialProps = async function() {
  const res = await axios.get("https://api.tvmaze.com/search/shows?q=batman");
  const data = await res.data;
  console.log(`Show data fetched. Count: ${data.length}`);
  return {
    data: data
  };
};

export default Body;

对我来说,代码看起来不错,但错误 Unhandled Rejection (TypeError): Cannot read property 'map' of undefined 不断发生。

最佳答案

我已经解决了这个问题。

它的发生是因为我违反了一个简单的规则。

根据 next.js document , 有一张纸条说

注意:getInitialProps 不能在子组件中使用。仅在页面中。

所以当我在 index.js 中获取数据时,它成功地获取了我想要的数据。

以为我可以在任何组件中使用 getInitialProps,就像 componentDidMount 一样。

这是个问题。

关于javascript - Next.js 中的 getInitialProps 没有从服务器获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54867560/

相关文章:

javascript - Angular JS : ngShow isn't binding my change

javascript - 无法解析从 PHP 返回的 JSON

javascript - Firebase 函数和 API key

javascript - React axios 发送多张图片表单数据

javascript 文本验证不起作用。警报消息不显示

javascript - 在 anchor 标记文本 jQuery 之前放置 span

javascript - 删除功能无法正常工作-Reactjs

javascript - 我想在进行 axios http 请求之前 setState,但不能

javascript - 如何修复 429(请求过多)?

javascript - 处理刷新 token 的方法