所以我从外部 api (omdbapi) 获取数据,确切的数据如下所示,标题为 Star:{"Search":[{"Title":"Star Wars: Episode IV - A New Hope","Year":"1977","imdbID":"tt0076759","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BNzVlY2MwMjktM2E4OS00Y2Y3LWE3ZjctYzhkZGM3YzA1ZWM2XkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_SX300.jpg"},{"Title":"Star Wars: Episode V - The Empire Strikes Back","Year":"1980","imdbID":"tt0080684","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BYmU1NDRjNDgtMzhiMi00NjZmLTg5NGItZDNiZjU5NTU4OTE0XkEyXkFqcGdeQXVyNzkwMjQ5NzM@._V1_SX300.jpg"},{"Title":"Star Wars: Episode VI - Return of the Jedi","Year":"1983","imdbID":"tt0086190","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BOWZlMjFiYzgtMTUzNC00Y2IzLTk1NTMtZmNhMTczNTk0ODk1XkEyXkFqcGdeQXVyNTAyODkwOQ@@._V1_SX300.jpg"},{"Title":"Star Wars: Episode VII - The Force Awakens","Year":"2015","imdbID":"tt2488496","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BOTAzODEzNDAzMl5BMl5BanBnXkFtZTgwMDU1MTgzNzE@._V1_SX300.jpg"},{"Title":"Star Wars: Episode I - The Phantom Menace","Year":"1999","imdbID":"tt0120915","Type":"movie","Poster":"https://m.media-amazon.com/images/M/MV5BYTRhNjcwNWQtMGJmMi00NmQyLWE2YzItODVmMTdjNWI0ZDA2XkEyXkFqcGdeQXVyNTAyODkwOQ@@._V1_SX300.jpg"},我是在 react native 中做的,这个名为 movies 的对象正在作为道具传递。代码如下:const MoviesList = props => { return <Text> {props.movies.Search.forEach((movie) => { movie.Title })} </Text>} 我得到的只是undefined没有呈现任何数据。
1 回答
ITMISS
TA贡献1871条经验 获得超8个赞
当您尝试渲染子元素/组件时,您无法使用forEach,因为 forEach 实际上并没有返回任何新内容,它只是循环通过现有集合。您可以在项目循环时对其进行更改,但不会创建或返回新集合。
你应该map改用。
我不确定是什么Text,例如它是您自己的组件还是来自库,但如果它是您自己的组件并且您想在该组件中呈现标题,则应该将循环包装在<Text>组件中,而不是将标题传递给<Text>.
请参阅下面的MoviesList.js
<div>
{props.movies.Search.map((movie) => {
return <Text title={movie.Title}/>
})}
</div>
我为完整代码制作了一个代码沙箱。
编辑
如果来自 API 的响应以字符串而不是对象的形式返回,您可以使用JSON.parse(YOUR_RESULTS)将字符串转换为对象。
要查看结果是否实际上是一个字符串,您可以执行YOUR_RESULTS.split("")并查看是否返回了一个数组。你也可以这样做console.log(typeof YOUR_RESULTS)。如果它实际上是一个字符串,"string"则会在控制台中记录。
添加回答
举报
0/150
提交
取消