繁体   English   中英

React.js 从保存的 api 响应中显示图像

[英]React.js display image from saved api response

所以我想从 API 做一个简单的图像获取。 我的目标是显示来自 API 的随机图像。 现在它说“数据”没有定义。 我不知道为什么会这样,因为我的 console.logs 在尝试在页面上显示之前正在工作。

这是我的 App.js

import React,{useEffect, useState} from 'react';
import Dog from './doggo';

//Main component
function App() {

  const [dogs, setDog] = useState();

  useEffect(() => {
      getDog();
  }, []);
  //Function to get data
  const getDog = async () => {
      //Fetch from url
      const response = await fetch("https://dog.ceo/api/breeds/image/random");
      //Store answer in data
      const data = await response.json();
      //Place data.message in setDog
      setDog(data.message);

      console.log(data.status);
      //data.message contains image url
      console.log(data.message);
  };
  return(
      <div>
          <h1>Press button to see your future dog!</h1>
          <button type="submit">See your dog!</button>
          <Dog
            image={data.message}
          />
      </div>
  );
};

export default App;

<Dog image={data.message}/>中使用{dogs}而不是{data.message}数据只是 getDog() function 的变量。

我重新格式化了您的代码以解决一些问题。

正如其他评论者所说, data不在您尝试访问的 scope 中。 (它仅在getDog() function 内部可用。)

export default function App() {
  const [dog, setDog] = useState();

  const getDog = async () => {
    const response = await fetch("https://dog.ceo/api/breeds/image/random");
    const data = await response.json();
    setDog(data.message);
  };
  
  return (
    <div>
      <h1>Press button to see your future dog!</h1>
      <button
        onClick={() => {
          getDog();
        }}
      >
        See your dog!
      </button>
      {dog ? <Dog image={dog} /> : null}
    </div>
  );
}

工作密码笔

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM