Альтернативный подход может быть следующим:
Вместо того, чтобы зацикливаться внутри JSX, вы можете сохранять индекс и элементы в состоянии и добавлять элемент в список непосредственно перед каждым рендерингом.Примерно так:
state = {
index: 0,
galleryItems: []
}
componentDidMount() {
// manually triggers the first component update
this.setState({ state: this.state });
}
componentDidUpdate() {
let galleryItems = this.state.galleryItems
let index = this.state.index
// loops until it reaches to the end of list
if(index < iconsToDisplay.length - 1) {
galleryItems.push(
<GalleryItem
key={index}
index={index}
item={icon}
size={iconSize}
isSelected={index===selectedIconIndex}
onClick={this.setIconIndex}/>)})
this.setState({
index: index + 1,
galleryItems: galleryItems
})
}
}
И затем вы можете получить этот список в цикле render()
.Примерно так:
render() {
return(
<div className="content-to-display">
{ this.state.galleryItems }
</div>
)
}
Таким образом, вы будете отображать их один за другим.
Отказ от ответственности: я чувствую, что это может сработать, но я не пробовал код.Я также сомневаюсь, что это каким-либо образом улучшит производительность.Я просто упоминаю это как возможный подход, возможно, стоит попробовать и посмотреть.