为了账号安全,请及时绑定邮箱和手机立即绑定

似乎无法使用点或数组表示法在 javascript 中访问对象中的值

似乎无法使用点或数组表示法在 javascript 中访问对象中的值

不负相思意 2022-05-26 11:10:05
所以我从外部 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"则会在控制台中记录。


查看完整回答
反对 回复 2022-05-26
  • 1 回答
  • 0 关注
  • 75 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信