首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用父组件传递的支柱呈现子组件时出错

使用父组件传递的支柱呈现子组件时出错
EN

Stack Overflow用户
提问于 2022-09-05 20:43:55
回答 1查看 93关注 0票数 0

我在创建我的react应用程序时遇到了问题。我正在从CoinGecko API中获取数据,以构建一个加密跟踪应用程序,但当我将data支柱从父App.js传递给子Info.js时。当我试图呈现页面时,它会给我Info.js:45 Uncaught TypeError: Cannot read properties of undefined (reading 'large')。我真的不明白为什么会这样。

App.js

代码语言:javascript
运行
复制
function App() {
  const [isToggled, setIsToggled] = useState(false);
  const [data, setData] = useState({});
  const [coin, setCoin] = useState("bitcoin");

  const getData = () => {
    axios({
      method: "GET",
      url: `https://api.coingecko.com/api/v3/coins/${coin}?localization=en`,
    })
      .then((response) => {
        console.log(response.data);
        setData(response.data);
        
      })
      .catch((err) => {
        console.log(err);
      });
  };

  useEffect(() => {
    getData(coin);
  }, []);

  return (
    <div>
      <HeaderContainer />
      <Search getData={getData} coin={coin} setCoin={setCoin} />
      <Info mcap={mcap} data={data} />
    </div>
  );
}

Info.js

代码语言:javascript
运行
复制
function Info({ image, mcap, data }) {
 return (
    <div className="info-container">
      <div className="left-column">
        <div className="top-row">
          <div className="coin-icon-container">
            <img
              className="coin-icon"
              src={data.image.large}
              alt="coin logo"
              width="40px"
              height="40px"
            ></img>
          </div>
          <div className="coin-name-container">
            <p className="coin-name">{data.name}</p>
            <p className="coin-abbr">{data.symbol}</p>
          </div>
          <div className="coin-MCAP-details">
            <p className="coin-position">#{data.market_cap_rank}</p>
            <p className="coin-MCAP">{data.market_data.market_cap.usd}</p>
          </div>

同样的错误发生在代码的第二行到最后一行的市值上。data.namedata.symbol呈现正确。

response.json文件很长,所以我将把重要的部分放在:

Response.json

代码语言:javascript
运行
复制
{
    "id": "bitcoin",
    "symbol": "btc",
    "name": "Bitcoin",
    "asset_platform_id": null,
     .......
    "image":{
    "thumb": "https://assets.coingecko.com/coins/images/1/thumb/bitcoin.png?1547033579",
    "small": "https://assets.coingecko.com/coins/images/1/small/bitcoin.png?1547033579",
    "large": "https://assets.coingecko.com/coins/images/1/large/bitcoin.png?1547033579"
    }
    .........
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-05 20:57:07

默认情况下,SetData是一个空对象,因为在useEffect中调用了Axios请求。在第一个呈现Info组件上,接收空的data对象。

去解决这个问题。

添加加载状态的

  • .
  • 或添加可选的链接
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73614504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档