【发布时间】:2021-02-15 14:08:09
【问题描述】:
嗨,我正在使用 iTunes Api 获取前 100 部电影。这是它在控制台中的外观:
我正在尝试获取 summary.label,但我收到“TypeError: Cannot read property 'label' of undefined”
下面是我的代码示例
import { MoviesList, MoviesListEl, Title, VideoWrap, MediaWrap, MovieDesc, MobilePreview } from "./styles"
export default class FetchRandomMovies extends React.Component {
state = {
loading: true,
movies: []
}
async componentDidMount() {
const url = "https://itunes.apple.com/us/rss/topmovies/limit=100/json"
const response = await fetch(url)
const data = await response.json()
this.setState({ movies: data.feed.entry, loading: false })
console.log(data.feed.entry)
if (data.feed.entry) {
// console.log(data.feed.entry.summary.label)
console.log(data.feed.entry[0].summary.label)
}
}
mouseEnter = e => {
e.currentTarget.play()
this.setState({ isPlaying: true })
// console.log(e)
}
mouseLeave = e => {
e.currentTarget.pause()
e.currentTarget.load()
this.setState({ isPlaying: true })
// console.log(e)
}
render() {
if (this.state.loading) {
return <div>loading...</div>
}
if (!this.state.movies.length) {
return <div>didn't get movies</div>
}
return (
<MoviesList id="top100">
{this.state.movies.map(item => (
<MoviesListEl key={item.title.label}>
<Title>
<span>{item.title.label}</span>
<span>{item.category.attributes.term}</span>
</Title>
<MediaWrap>
<img src={item["im:image"][2].label} alt={item.title.label} />
<VideoWrap>
<video onMouseEnter={this.mouseEnter} onMouseLeave={this.mouseLeave} controls>
<source src={item.link[1].attributes.href} type="video/x-m4v" />
</video>
</VideoWrap>
</MediaWrap>
<MovieDesc>{item.summary.label}</MovieDesc>
<MobilePreview href={item.link[1].attributes.href} />
</MoviesListEl>
))}
</MoviesList>
)
}
}
当我尝试{item.summary.label} 时出现错误。但是{item.title.label} 工作正常。
与 console.logs 类似:
console.log(data.feed.entry.summary.label) 抛出错误,但 console.log(data.feed.entry[0].summary.label) 工作正常。
这很奇怪,因为我早上工作时一切正常。现在,当我执行“npm start”时,这个问题就发生了。 API有问题吗?为什么我不能得到这个summary.label?
提前谢谢你
【问题讨论】:
标签: javascript json reactjs api typeerror