我正尝试在react项目的API调用中访问图像URL,但我得到的错误消息是该URL未定义为错误。我试图找到错误,但找不到。请帮助我知道我做错了什么。
下面是我的代码。给我一个问题的地方被注释掉了。
import React, { Component } from 'react'
import axios from "axios";
import { Card} from "react-bootstrap";
export default class App extends Component {
state = {
data: []
};
componentDidMount() {
this.fetchCountryData();
}
fetchCountryData = async () => {
const url = "https://api.thecatapi.com/v1/breeds";
try {
const response = await axios.get(url);
const data = await response.data;
this.setState({
data
});
} catch (error) {
console.log(error);
}
};
render() {
return (
<div className="App">
<h1>React Component Life Cycle</h1>
<h1>Calling API</h1>
<div>
{
this.state.data.map((item, id) => (
<div key={id}>
{console.log(item)}
<Card style={{ width: '18rem' }}>
{/* <Card.Img variant="top" src={item.image.url} /> This part is giving me the problem */}
<Card.Body>
<Card.Title>{item.name}</Card.Title>
<Card.Text>
{item.origin}
</Card.Text>
<Card.Text>
{item.temperament}
</Card.Text>
<Card.Text>
{item.weight.metric}
</Card.Text>
<Card.Text>
{item.description}
</Card.Text>
{/* <Button variant="primary">Go somewhere</Button> */}
</Card.Body>
</Card>
{/* { <img src={item.image.url} alt=""/> } Please why is this not working ? */}
{/* {item.name} <br/>
{item.origin} <br/>
{item.temperament} <br/>
{item.life_span} <br/>
{item.weight.metric} <br/>
{item.description} <br/> */}
</div>
))
}
</div>
</div>
)
}
}
发布于 2021-02-15 17:16:18
这很有趣。我的第一个想法是,当组件呈现时,item.image
对象不存在,这就是为什么您不能访问未定义对象中的属性。但后来我意识到这并不适合item.weight.metric
。我将拭目以待,看看其他人对此有何评论。
但是,基本的修复方法是,您可以简单地将图像链接用作item.image && item.image.url
或简称为item.image?.url
,这样它就不会抛出。
https://stackoverflow.com/questions/66199473
复制相似问题