Tom*_*Tom 7 reactjs react-table react-window react-table-v7
我正在使用(和材料 UI 表)react-window
创建虚拟表react-table 7
。
我嵌入了 FixedSizeList 而不是 TableBody。像这样的东西:
<TableBody {...getTableBodyProps()}>
<FixedSizeList
height={listHeight}
itemCount={rows.length}
itemSize={rowHeight}
>
{RenderRow}
</FixedSizeList>)
</TableBody>
Run Code Online (Sandbox Code Playgroud)
RenderRow 返回 TableRows。像这样的东西:
const RenderRow = React.useCallback( ({ index, style }) =>
{
const row = rows[index];
prepareRow(row);
const rowProps = row.getRowProps();
return (<TableRow
{...row.getRowProps({
style,
})} />);
}
Run Code Online (Sandbox Code Playgroud)
由于react-window
工作原理,它创建了几个div
s 来实现列表滚动,根据需要动态嵌入所需的 TableRow,从而导致输出 react js 警告。
webpack-internal:///490:506 Warning: validateDOMNesting(...): <tr> cannot appear as a child of <div>
只是忽略这个警告,不是我想做的事情,因为它可能会导致其他警告不被注意。(我也不想在测试时使用发布版本)
那么是否有可能阻止发出此警告?或者是否可以react-window
用于表行,而不会收到此警告?
更新:尝试设置innerElementType
到tbody
建议。
这会更改FixedSizeList
呈现的内部 div 。
从:
<div style="position: relative; height: 96px; overflow: auto; will-change: transform; direction: ltr;">
<div style="height: 96px; width: 100%;">
Run Code Online (Sandbox Code Playgroud)
到
<div style="position: relative; height: 96px; overflow: auto; will-change: transform; direction: ltr;">
<tbody style="height: 96px; width: 100%;">
Run Code Online (Sandbox Code Playgroud)
所以现在包含在 tbody 中。
所以我想我还需要用来outerElementType
改变外层div
,以处理div
intable
警告,但我想不出任何有效的方法......
如果我不希望包括thead
我可以设置outerElementType
要table
与innerElementType
以tbody
FixedSizeList
接受一个innerElementType
prop来让你指定要使用的 HTML 标签而不是div
. 据我阅读代码可以看出,它或多或少需要是一个标签字符串。
您可能希望它innerElementType
是tbody
,这意味着要稍微重新处理父元素;我猜你不会想继续使用TableBody
.
归档时间: |
|
查看次数: |
518 次 |
最近记录: |