开发者问题收集

如何访问 props 返回的数据

2018-08-31
38

我是 nextjs 和 react 的新手。我正在使用 nextjs 从 api 获取数据并将其显示在视图中。这是我的代码。

const Index = props => (
  <Layout>
    <h1>Events</h1>
    <ul>
      {props.eventList.map(({ venue }) => (
        <li key={venue.name}>
          <a>{venue.name}</a>
        </li>
      ))}
    </ul>
  </Layout>
);

Index.getInitialProps = async function() {
  const res = await fetch("api link here");
  let data = await res.json();
  console.log(`Show data fetched. Count: ${data.events.length}`);
  return {
    eventList: data.events
  };
};

现在我的 api 返回的数据如下

[
    {
      "id": 4303920,
      "name": "Test Event",
      "venue": {
        "id": 1610,
        "name": "Eiffel Tower Viewing Deck at Paris Las Vegas",
      }
    },
    {
      "id": 4323,
      "name": "Test Event 2",
      "venue": {
        "id": 1610,
        "name": "Eiffel Tower Viewing Deck at Paris Las Vegas",
      }
    }
]

我可以通过 props.eventList.map 函数访问场地详细信息,但无法访问 id 和名称。

2个回答

在您的地图中,不要使用 ({venue}) => 而要使用 (item) => 您的问题是您获取每个元素,但只从中提取场地,而不是提取整个元素。一旦您有了项目,您就可以说 item.id、item.venue 等。

Chris Cousins
2018-08-31

您不应该将 {venue} 放在您的 map 函数中,而是像这样传递事件 (event),那么您将获得 even.name 和 event.is,并且您将获得 event.venue.id 和 event.venue.name

Lazar Nikolic
2018-08-31