我尝试显示 api 数据但什么也没有显示,甚至在 React 上也没有错误

I try to display api data but nothing comes out, not even an error on React

我正在慢慢理解 React 的服务和抓取,但是当我尝试展示一些东西时,它什么也没给我展示。我放了代码以防有人能帮助我。也许我必须看看如何使用 JSON,我不知道。

let datosApi = [];

const recogerDatos = () => {
    let json = "https://jsonplaceholder.typicode.com/albums";
    let miApi = "http://localhost/dsw/api/";
    fetch(json)
        .then(data => data.json())
        .then(info => {
            console.log(info);
            this.datosApi = info;
        })
}

function Services() {
    return (
        <>
            {datosApi.map(datos => (
                <p>{datos.title}</p>
            ))}
        </>
    );

}
export default Services;

JSON 数据出现在 https://jsonplaceholder.typicode.com/albums

您正在显示列表中的数据

let datosApi = [];

但是,您似乎没有使用 API 中的数据填充您的列表,因为 recogerDatos() 方法从未被调用过。

我认为您的示例遗漏了某些内容,或者您​​还没有完成。

基本上有几点不对:

  1. recogerDatos 从未被调用
  2. datosApi 未声明,即使声明了,它也不是有状态的,因此不会导致 re-render 您的项目。

我创建了一个工作沙箱 here 显示它正在工作,代码如下:

const [result, setResult] = useState([]);
const recogerDatos = () => {
  let json = "https://jsonplaceholder.typicode.com/albums";
  fetch(json)
    .then((data) => data.json())
    .then((info) => {
      console.log(info);
      setResult(info);
    });
};

useEffect(() => {
  recogerDatos();
}, []);

return (
  <div className="App">
    {result.length > 0 && result.map((datos) => <p>{datos.title}</p>)}
  </div>
);

页面加载时调用 recogerDatos 函数(参见 useEffect),并在获取成功时更新结果。这会导致 re-render 并显示项目。

从您的代码来看,您似乎缺少一些核心 React 模式,例如状态管理和组件生命周期。由于 React re-renders 组件很多,你希望将获取的数据之类的东西存储到状态中,以避免它们不断地重置为初始值。当你想要获取数据时,你通常不想在每个 re-render 都这样做(那会导致大量的获取),相反你通常希望基于不同的事件触发它,例如当组件(将用于显示此数据)已安装。此类事情通常使用组件生命周期方法/useEffect 挂钩来确保它们在正确的时间点发生。我建议您阅读 React 文档并多学习一些基础知识,以便您在编码时能够理解主要概念,但这里有一个快速沙箱,其中包含一个示例,说明您如何在 React 中获得所需的效果: https://codesandbox.io/s/beautiful-frost-on9wmn?file=/src/App.js