我需要扩展TableRow组件以打开另一个包含一些字段的div。但是,如果我尝试在表格中添加div, React 会抛出警告。
warning: validateDOMNesting(...): <div> cannot appear as a child of <tr>. See RowComponent > TableRow > tr > div.
所需功能类似于嵌套列表组件中的^
按钮以折叠/展开。
有没有办法自定义 material-ui TableRow 来展开/折叠?
答案 0 :(得分:5)
material-ui网站表组件页面上有一个“可折叠表”的示例:https://material-ui.com/components/tables/#collapsible-table。
该示例正是我想要的,而且我敢肯定还有很多其他人。
答案 1 :(得分:2)
根据您的用例,您可能希望使用expansion panels。
如果您仍然想使用表格,则可以在Collapse
组件上设置component
道具。您必须在原始TableRow
之外使用它。在TableCell
或td
内,您可以使用所需的任何元素。查看this codesandbox中的示例。
有趣的代码段:
<Collapse in={open} component="tr" style={{ display: "block" }}>
<td>
<div>Expanded data.</div>
</td>
</Collapse>
这里的重要部分:
component="tr"
告诉Collapse
组件使用tr
而不是div
display: "block"
覆盖display: "table-row"
组件的默认tr
答案 2 :(得分:2)
此解决方案有效,您还可以将colSpan
添加到包含TableCell
的{{1}}中,以使边框宽度与顶部的TableCell数量匹配。
Collapse
答案 3 :(得分:1)
<div>
。删除<div>
标签并在其位置使用Card
组件对我来说很有效。
您可以在此处查看代码:https://github.com/shiveeg1/tracker-quick-entry/blob/master/src/components/super-row.js
此线程上还提供了许多非常有用的替代方法:https://github.com/mui-org/material-ui/issues/4476