【发布时间】:2021-11-20 18:30:12
【问题描述】:
我试图在我的 React 组件中显示一些数据,但有些数据我无法获取。
我可以获取任何其他简单数据,但在获取数组中的数据时遇到问题。
API 格式如下:
res.data
genres: (3) [(...), (...), (...)]
0: {name: 'Adventure'}
1: {name: 'Fantasy'}
1: {name: 'Sci-Fi'}
这是我的代码:
const [anime, setAnime] = useState([])
const [random, setRandom] = useState(0)
useEffect(() => {
axios
.get(`https://api.jikan.moe/v3/anime/${random}`)
.then(res => {
console.log(res.data)
setAnime(res.data)
})
.catch(err => {
randomAnime()
})
}, [random])
const randomAnime = () => {
setRandom(1 + Math.floor(Math.random() * 100))
}
return (
<Anime title={anime.title} genres={anime.genres} />
)
}
然后,我将anime.genres 作为道具传递给另一个组件。在那里,我尝试渲染以下内容:
genres.map((genre) =>
<span key={genre.name.toString()}>
{genre.name}
</span>
)
这个错误显示:
TypeError: Cannot read properties of undefined (reading 'map')
实际上,我要渲染的是以下字符串(这部分还没有实现,我想将所有数组项合并到一个用逗号分隔的字符串中):Adventure, Fantasy, Sci-Fi。
希望有人可以帮助我,我整个中午都被击中了。提前致谢。
问候
【问题讨论】:
-
看起来
genre可能是空的/未定义的。您可能希望对此进行异常处理。
标签: javascript arrays reactjs axios