我正在做一个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
会抛出这个错误 vs map
?有什么独特的react.map
吗?两者都返回一个数组。