我试图显示一个表格数据,它应该看起来像8.5x11纸张上的数据。我所做的是创建一个8.5x11的div,并添加边框和白色背景,使其看起来像一张纸。然后我需要确定我需要多少页面,这样我才能渲染这些div。我可以得到元素的总高度,这样如果内容已经达到单个页面的限制,我就可以以此为基础,但我的问题是,我不知道如何呈现第一个div之后的下一个div。
我只能在渲染过程中获取高度:
<div>
{
<div className="content">
<table id="main-tbl">
<thead>
<tr>
<th>Student No.</th>
<th>First Name</th>
<th>Last Name</th>
</tr>
</thead>
<tbody>
{
this.state.registeredStudents.map((stud) => {
currentTotalHeight += $("#main-tbl")[0].offsetHeight;
console.log(currentTotalHeight);
return (
currentTotalHeight < this.contentHeightLimit &&
<tr key={stud.id} data-id={stud.id}>
<td>{stud.studentNo}</td>
<td>{stud.firstName}</td>
<td>{stud.lastName}</td>
</tr>
)
})
}
</tbody>
</table>
</div>
}
</div>
我计划在每次添加元素时检查表的高度,一旦达到预期的页面高度,就再次启动新的div,但这是我的问题,我不知道如何渲染下一个div。我该如何构造它,以便一旦达到高度限制,就再次渲染同一个div?我想做这样的事情:
<div>
{
this.state.numOfPages.map((index) => {
return (
<div className="content">
<table id="main-tbl">
<thead>
<tr>
<th>Student No.</th>
<th>First Name</th>
<th>Last Name</th>
</tr>
</thead>
<tbody>
{
this.state.registeredStudents.map((stud) => {
currentTotalHeight += $("#main-tbl")[0].offsetHeight;
console.log(currentTotalHeight);
return (
currentTotalHeight < this.contentHeightLimit &&
<tr key={stud.id} data-id={stud.id}>
<td>{stud.studentNo}</td>
<td>{stud.firstName}</td>
<td>{stud.lastName}</td>
</tr>
)
})
}
</tbody>
</table>
</div>
})
}
</div>
但我不知道如何获得页数,直到所有内容都呈现出来,否则就太晚了。