【问题标题】:Multiple fetch data axios with React Hooks - render data使用 React Hooks 多次获取数据 axios - 渲染数据
【发布时间】:2019-10-12 20:19:54
【问题描述】:

我正在使用 React 钩子和 axios,基于前面的示例从多个端点获取数据。 不过,我在渲染数据时遇到了麻烦。

我有 forked 一个宝贵的例子,你可以看到这个问题。 有人可以帮忙指出我的 .map() 哪里出了问题...?

谢谢!!

【问题讨论】:

标签: reactjs axios react-hooks


【解决方案1】:
setGitData({ data: respGlobal.data, repos: respGlobal.data });

respGlobal被用在两个地方

{resp.data}

在 JSX 中不起作用,因为它是一个对象并且需要一个字符串

完整的工作示例:

import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";
import axios from "axios";

import "./styles.css";

const username = "mayankshubham";
function App() {
  const [resp, setGitData] = useState({ data: null, repos: null });

  useEffect(() => {
    const fetchData = async () => {
      const respGlobal = await axios(
        `https://api.github.com/users/${username}`
      );
      const respRepos = await axios(
        `https://api.github.com/users/${username}/repos`
      );

      setGitData({ data: respGlobal.data, repos: respRepos.data });
    };

    fetchData();
  }, []);

  console.log("render");
  if (resp.data) {
    console.log("d", resp.data, resp.repos);
  }

  return (
    <div>
  <h1>Hello </h1>
    <div>{JSON.stringify(resp.data)}</div>
    <br />
    <div>{JSON.stringify(resp.repos)}</div>
  </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

【讨论】:

  • 这很棒。非常感谢,我正在从另一个 API 获取数据,它确实有效。我基本上是在尝试按照 React 文档来渲染列表 const { resp } = data; const bookList = data.map((genre, i) =&gt; &lt;li key={genre.i} name={genre.name} /&gt;);,然后在返回中渲染 `{bookList}` ... & .map() 抛出错误 ....
猜你喜欢
  • 2019-08-26
  • 2021-12-06
  • 2021-01-02
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-04
  • 1970-01-01
相关资源
最近更新 更多