【问题标题】:Map and Render Data from API in ReactJS (Function Components)在 ReactJS(函数组件)中从 API 映射和渲染数据
【发布时间】:2021-12-26 12:03:41
【问题描述】:

我正在学习反应。需要从 ReactJS(功能组件)中的 tinyfac.es API 映射 5 个图像。正在正确获取图像(在控制台中)但无法渲染它。如果可能,请解释错误。 非常感谢:D

代码:

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

let base_url = `https://tinyfac.es/api/data?limit=50&quality=0`;

function Storyslider() {
  const [Containers, setContainers] = useState([]);
  useEffect(() => {
    axios
      .get(base_url)
      .then((a) => {
        console.log(a.data[0].url);
        setContainers(a.data.results);
      })
      .catch((b) => {
        console.log(Error);
      });
  }, []);
  return (
    <div>
      {Containers &&
        Containers.map((Contain, index) => (
          <img
            src={Contain.data[0].url}
            alt={Contain.data[0].gender}
            key={index}
          />
        ))}
    </div>
  );
}

导出默认 Storyslider; 非常感谢:D

【问题讨论】:

  • a.data.results 未定义,响应中没有 results 属性。此外,每个Contain 对象 具有urlgender 属性的对象。映射对象上没有 data 属性。投票结束为“不可复制或由错字引起”。干杯。

标签: javascript reactjs api rest


【解决方案1】:

results 对象内没有 results 键。所以这就是为什么,您的数据没有正确设置为Containers 状态。

这是你的工作代码:

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

let base_url = `https://tinyfac.es/api/data?limit=50&quality=0`;

function Storyslider() {
  const [Containers, setContainers] = useState([]);
  useEffect(() => {
    axios
      .get(base_url)
      .then((a) => {
        console.log(a.data);
        setContainers(a.data);
      })
      .catch((b) => {
        console.log(Error);
      });
  }, []);
  return (
    <div>
      {Containers &&
        Containers.map((Contain, index) => (
          <img
            src={Contain?.url}
            alt={Contain?.gender}
            key={index}
          />
        ))}
    </div>
  );
}

export default Storyslider

如果你想从数组中渲染单个图像(或第一张图像),你可以简单地做

{Containers && <img src={Containers[0].url} alt={Containers[0].gender} />}

【讨论】:

  • 这是真的!我想作者只是混淆了接收到的数据和设置到useState Containers变量的数据
猜你喜欢
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-30
  • 1970-01-01
  • 2019-05-11
  • 1970-01-01
  • 2019-05-25
相关资源
最近更新 更多