【发布时间】:2018-01-06 01:02:09
【问题描述】:
我正在做一个 React 项目来学习 React。
在组件的渲染方法中,当我使用.map 迭代值并返回组件数组时,一切都按预期工作。
<ol className="books-grid">
{
books && books.map((book, index) => {
if (book.shelf === shelf) {
return (
<Book key={book && book.id ? book.id : index} changeShelf={this.props.changeShelf} book={book} />
);
}
})}
</ol>
但是当我使用filter:
<ol className="books-grid">
{
books && books.filter((book, index) => {
if (book.shelf === shelf) {
return (
<Book key={book && book.id ? book.id : index} changeShelf={this.props.changeShelf} book={book} />
);
}
})}
</ol>
我得到了错误(我已经研究过)
Uncaught (in promise) Error: Objects are not valid as a React child
我不明白为什么 filter 与 map 相比会抛出此错误?有什么独特的反应和.map?两者都返回一个数组。
【问题讨论】:
-
您是否尝试过在过滤器和映射回调箭头函数中接收到的这两种情况下的图书对象作为参数?我很肯定你会看到一些差异。
标签: javascript reactjs