我有一个Material UI 表格。
我是这样构建它的:
这个“问题”实际上是一个经过美化的“[TextField]”2,如下所示:
这个可以做,每个单元格中都有适当的内容...但是
表格是全宽的,直到达到某个点,然后注意到这里: 当窗口缩小到一定程度时,表格不会再进一步缩小。就好像里面的元素有一个最小宽度一样。
作为调查的过程,我将
因此,我认为问题出在我的“Question”组件上。值得注意的是,这也发生在其他“Questions”上——当它们没有定义宽度时,它们似乎都有一个最小宽度...除非它们放置在具有指定宽度的容器中,例如Material UI Grid。例如,当它们放置在一个“Grid”中并且窗口被缩小时,它们会适当地缩小: 那么为什么Table/TableCell没有像Grid一样缩小TextField呢?(或者说:如何删除我的textFields上的明显“MinWidth”?)Material UI的TextField是否有最小宽度,如果没有其他指定的话?
值得一提的是,我尝试过指定表格的列宽 - 当表格很宽时成功了,但仍未解决明显的最小宽度问题。
我还尝试将组件更改为,但仍然存在同样的问题。有趣的是,当组件只是“hi”时,问题消失了,但当它是一个输入时,问题就出现了。
我是这样构建它的:
tableValues.map((curRow, row) => {
tableRows.push(
<TableRow key={this.state.key + "_row_" + row}>
{curRow.map((cellContent, col) => {
let adHocProps = {...this.props, type:"Text", label:"", value:cellContent}
return (
<TableCell className={classes.tableCell} key={this.props.key + "_row:" + row + "_col:" + col}>
{col===0 && this.props.rowHeaders ?
<div className={classes.header}>{cellContent}</div> :
<Question {...adHocProps} stateChangeHandler={this.handleTableChange("in build")} />}
</TableCell>
)})}
</TableRow>
);
return null;
});
return (
<Table key={this.props.key + "_table"} className={classes.table}>
<TableHead>
<TableRow>
{this.props.colHeaders.map((header) => <TableCell className={classes.tableCell} key={this.props.id + header}><div className={classes.header}>{header}</div></TableCell>)}
</TableRow>
</TableHead>
<TableBody>
{tableRows}
</TableBody>
</Table>
);
这个“问题”实际上是一个经过美化的“[TextField]”2,如下所示:
<div>
<TextField
value={this.state.value}
onChange={this.handleTextChange(this.props.key)}
key={this.props.key}
id={this.props.id}
label={this.props.label}
placeholder={realPlaceholder}
className={classes.textField}
fullWidth
xmlvalue={this.props.XMLValue}
/>
</div>
...然后用Paper
包装。
样式为:
tableCell: {
padding: 5,
},
textField: {
padding: 0,
margin: 0,
backgroundColor: "#191",
}
这个可以做,每个单元格中都有适当的内容...但是
Question
元素比需要的宽得多,似乎有一个最小宽度和一些无法删除的填充。表格是全宽的,直到达到某个点,然后注意到这里: 当窗口缩小到一定程度时,表格不会再进一步缩小。就好像里面的元素有一个最小宽度一样。
作为调查的过程,我将
Question
元素更改为简单地返回“Hi”。这样做后,表格看起来是这样的:
这意味着它能够很好地压缩...顶部、底部和右侧仍然有太多的填充,但是已经好多了。因此,我认为问题出在我的“Question”组件上。值得注意的是,这也发生在其他“Questions”上——当它们没有定义宽度时,它们似乎都有一个最小宽度...除非它们放置在具有指定宽度的容器中,例如Material UI Grid。例如,当它们放置在一个“Grid”中并且窗口被缩小时,它们会适当地缩小: 那么为什么Table/TableCell没有像Grid一样缩小TextField呢?(或者说:如何删除我的textFields上的明显“MinWidth”?)Material UI的TextField是否有最小宽度,如果没有其他指定的话?
值得一提的是,我尝试过指定表格的列宽 - 当表格很宽时成功了,但仍未解决明显的最小宽度问题。
我还尝试将组件更改为,但仍然存在同样的问题。有趣的是,当组件只是“hi”时,问题消失了,但当它是一个输入时,问题就出现了。
let htmlAtrrSize = String(row[name]).length;
然后inputProps={{size: htmlAtrrSize,}}
- Michael