【发布时间】:2018-10-16 17:10:57
【问题描述】:
所以基本上,我的表格有一堆子标题,我希望在这些小节之后插入一个分页符,并防止在其中一个节的中间自动分页符。大致是这样的。灰色区域是分页符之前的子标题,如果它是第 4、8、12 等小节。
我遇到的两个主要问题可能是 React 独有的,也可能不是 React 独有的。另外,我正在使用 Bootstrap。
1) <div> 作为<table>、<tbody>、<thead> 的子问题:
我最初的想法是在每 4 个 <th> 之后插入 <div className='pagebreak'>。这将触发错误(解释)为<div> cannot be a child of <table>/<tbody>/<thead>。
因此,不允许执行以下操作:
let i = 1;
return _.map(section, s => {
i++;
return (
<table>
<tbody>
<tr>
<th colSpan='6'>{s.subSectionTitle}</th>
</tr>
<tr>
<td>{s.data1}</td>
<td>{s.data2}</td>
<td>{s.data3}</td>
<td>{s.data4}</td>
<td>{s.data5}</td>
<td>{s.data6}</td>
</tr>
{ i = 4 ? <div className='pagebreak'></div> : null }
</tbody>
</table>
)
})
我有一些其他没有用的好主意是:
{ i = 4 ? <tr className='pagebreak'></tr> : null }
或者:
{ i = 4 ? <th><td className='pagebreak'></th></tr> : null }
或者:
{ i = 4 ? <tr><th><div className='pagebreak'></div></th></tr> : null }
虽然这些会绕过那里的错误,但它们不会做任何事情。它将忽略pagebreak
您似乎不能在 <table> 标记内放置任何类型的分页符。
2) 为每个小节创建一个新的<table>。
它看起来像废话,因为列宽会因表而异,除非我将宽度设为静态,而我不想这样做。希望在保持所有列宽度相同的同时保持动态,这取决于给定列中数据点的最大宽度。
话虽如此,这确实有效,因为它实际上插入了一个分页符:
return (
<table>
<tbody>
<tr>
<th colSpan='6'>{s.subSectionTitle}</th>
</tr>
<tr>
<td>{s.data1}</td>
<td>{s.data2}</td>
<td>{s.data3}</td>
<td>{s.data4}</td>
<td>{s.data5}</td>
<td>{s.data6}</td>
</tr>
</tbody>
</table>
<div className='pagebreak'></div>
<table>
<tbody>
<tr>
<th colSpan='6'>{s.subSectionTitle}</th>
</tr>
<tr>
<td>{s.data1}</td>
<td>{s.data2}</td>
<td>{s.data3}</td>
<td>{s.data4}</td>
<td>{s.data5}</td>
<td>{s.data6}</td>
</tr>
</tbody>
</table>
)
对如何处理有什么建议吗?
【问题讨论】:
-
<div className='pagebreak'></divis missing a>我认为你应该在一个包装元素中返回所有内容,而不是两个表和一个 DIV -
修复了标签。这就是我想做的,最好是在
<table>的中间,但请参阅问题1)。它不接受它。 -
你试过用引号括起来吗?
{ i = 4 ? "<div className='pagebreak'></div>" : "" } -
validateDOMNesting(...): Text nodes cannot appear as a child of <tbody>基本上忽略了标签。
标签: html css twitter-bootstrap reactjs