arrays - 错误:对象作为 React 子对象无效,但我的数据是对象数组?
问题描述
免责声明:我检查了其他线程,例如这个线程,可以看到我的问题在技术上并不相同:Promise Error: Objects are not valid as a React child
我已经发送了我的 api 请求:
async getGenreList(){
const genresResults = await getGenres()
return genresResults
}
componentDidMount() {
this.getGenreList().then((response) => {
this.setState({ genreOptions: response})
});
}
这是响应:每个对象都包含一个 id 和 name 键
(19) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
在 stategenreOptions 中期待一个数组
this.state = {
totalCount: 0,
genreOptions: [],
};
我传递genreOptions
给MovieList
组件,然后在该组件上映射genreOptions
<MovieList movies={results || []} genres={genreOptions || []} />
在 MovieList 组件内部
{genres.map((genre)=>{
return <div>{genre.id} {genre.name}</div>
})}
我正在映射从我的 Promise 返回的对象数组,所以我不确定为什么会出现错误。Error: Objects are not valid as a React child (found: object with keys {id, name}). If you meant to render a collection of children, use an array instead.
如果你发现它,请告诉我。
提前致谢。
更新以显示其中一个对象的外观
0:
id: 28
name: "Action"
__proto__: Object
更新以显示完整的 MOVIELIST COMPONENET
export default class MovieList extends React.Component {
render() {
const { movies, genres } = this.props;
return (
<MoviesWrapper>
{movies.map((movie) => {
return <div>{movie.title}</div>;
})}
{genres.map((genre)=>{
return <div>{genre.id} {genre.name}</div>
})}
</MoviesWrapper>
);
}
}
*** 我想出的一个解决方案,但不确定我应该在更新状态时使用 .map ***
this.getGenreList().then((response) => {
this.setState({ genreOptions: response.map((genre) => genre.name)})
});
这将返回一个名称数组
解决方案
问题是我在我的一个组件中返回并在 JSX 括号内反对,该组件也包含movieGenres
<GenreFilterCont marginTop>
{filtersShown && (
<ExpandableFiltersUl>
{this.props.movieGenres.map((genre) => {
return (
<ExpandableFiltersLi>
<Checkbox />
{genre} //here
</ExpandableFiltersLi>
);
})}
</ExpandableFiltersUl>
)}
</GenreFilterCont>
而不是
<GenreFilterCont marginTop>
{filtersShown && (
<ExpandableFiltersUl>
{this.props.movieGenres.map((genre, index) => {
return (
<ExpandableFiltersLi key={index}>
<Checkbox />
{genre.name} //here is correct and not an object
</ExpandableFiltersLi>
);
})}
</ExpandableFiltersUl>
)}
</GenreFilterCont>
推荐阅读
- flutter - 异步/等待未按预期工作。如何在 Flutter 中开始播放声音 4 秒后启动计时器?
- c++ - 将二维数组插入 std::vector 时出现错误消息“无法从 'const GLfloat [12]' 转换为 '_Objty'”
- python - 如何对不同长度的numpy数组进行子集化
- linux - 使用 Spike 启动 Linux 时出现故障?
- socket.io - Streamlink 与 Youtube 插件:如何获取 scheduleStartTime 值?
- android - 即使颁发安装在信任库中的证书,Android 也不信任自签名证书
- callback - Rails 5 throw(:abort) 中的 before_destroy 回调,但也修改了记录
- c++ - 模板类中的动态模板方法选择
- c# - 如何以 xamarin 形式保存 sqlite 中的对象列表
- python - 切片索引必须是整数,它已经是它了。如何超越这个?