我正在尝试使用解构从对象中获取名称属性,但返回错误“无法读取未定义的属性名称。
// Get genres for given movie
getGenres = (genreIds, genres) => {
return genreIds.map(genreId => {
const filteredGenres = genres.filter(genre => genre.id === genreId);
const { name } = filteredGenres[0];
return name;
})
};
如果我控制台日志filteredGenres[0]
确实返回了带有名称和ID的有效对象,那么我也已使用typeof
进行了检查,以确保。结果是:
{id: 14, name: "Fantasy"}
如果我尝试控制台日志filteredGenres[0].name
,我也会得到相同的无法读取未定义错误的属性名称。
我不确定自己在做什么错吗?非常感谢您的任何帮助! :)
我已经按照要求创建了一个堆叠闪电战。有问题的文件为NowPlaying.js
答案 0 :(得分:1)
根据您的Stackblitz示例,状态属性genres
被初始化为空数组。
这意味着当您将其作为道具传递给NowPlaying
时,filterGenres
也会是一个空数组,因此会出现错误。
这仅在获取流派之前发生。 genres
被获取并更新状态后,状态被更新,一切看起来都很好。
您必须考虑genres
数组为空。