Возможно, в массиве beers
хранится значение undefined
. Попробуйте отфильтровать их, вот так:
beers.filter(Boolean).map((beer, index) => (
// ...
)
Также я заметил, что hasMore
prop всегда установлен на true
. Чтобы посмотреть, поможет ли это, попробуйте что-то вроде:
<InfiniteScroll
dataLength={beers.length}
next={fetchMoreBeers}
hasMore={beers.length < 25} // or hasMore={this.state.hasMore}
loader={<p>Loading ...</p>}
endMessage={<p id="beers-end">No more beers :(</p>}
> ...
EDIT:
Вы используете Array.from({ length: 20 }))
. Выходной массив будет содержать 20 undefined
значений. Вот почему вы должны рассмотреть beers.filter(Boolean)
.
Полагаю, именно это вы и имели в виду:
this.setState({
items: this.state.beers.concat(Array.from(this.state.beers))
})
или
this.setState({
items: [...this.state.beers, ...this.state.beers]
})