Я использую react ultimate pagination
для создания функции нумерации страниц. При нажатии на номер страницы я обновляю переменную, чтобы показать, что нужно. Проблема в том, что у меня есть цикл, который может иметь переменное количество элементов, поэтому я не знаю, сколько их заранее. Вот код:
{
this.state.fullAnalysisDone && this.state.activeKey == 3 ?
<div>
{
this.get_analysis_charts(this.chartTypes[parseInt(this.state.activeKey)]).map((chart_arr, idx) => {
return <div style={{visibility: this.state.currPageDiffGenes === (idx + 1) ? 'visible' : 'hidden' }}>
<img src = {chart_arr[0]} style = {{height:"400px", width:"500px"}}/>
<img src = {chart_arr[1]} style = {{height:"400px", width:"500px"}}/>
</div>
})
}
<div style = {{marginLeft: '35%'}}>
<UltimatePaginationBootstrap4 key = 'diff_genes_pagination'
totalPages = {this.get_analysis_charts(this.chartTypes[parseInt(this.state.activeKey)]).length}
onChange = {this.changedDiffGenes}
currentPage = {this.state.currPageDiffGenes}/>
</div>
</div>
: ""
}
Я действительно не могу оставить здесь <div style={{visibility: this.state.currPageDiffGenes === (idx + 1) ? 'visible' : 'hidden' }}>
, потому что это занимает место на странице. Если бы я знал заранее количество итераций, я мог бы просто сделать следующее:
{
this.state.currPageDiffGenes === 1 ?
loop over but return only the 1st element
:""
}
{
this.state.currPageDiffGenes === 2 ?
loop over but return only the 2nd element
:""
}
...
И это будет работать, потому что элементы будут воссозданы каждый раз, но я не могу сделать это с циклом переменной длины. Как мы можем решить эту проблему? Я использую d3
в приложении, поэтому я могу просто присвоить ids
соответствующим divs
и, возможно, уничтожить-вставить элементы при использовании нумерации страниц, но я чувствую, что это излишне, и должно быть более простое решение.