【发布时间】:2020-08-22 16:44:09
【问题描述】:
这是一个包含 16 个项目的长下拉列表。因此,当我单击它并尝试向下滚动以到达最后一项时,会发生这种情况:
整个表格向下滚动,下拉列表被拖动。所以当我试图到达最后一个项目时,我做不到。整个表格的 UI 变得一团糟。
这是下拉列表代码:
const statusDropDown = (
<Dropdown
isOpen={this.state.statusUpdateDropDownOpen}
toggle={this.toggleStatusUpdateDropDown}
// scrollable={true}
>
<DropdownToggle className="my-dropdown" caret>
{this.state.statusUpdateDropDownValue}
</DropdownToggle>
<DropdownMenu>
{Object.entries(listeDesStatus).map(([key, value], i) => {
console.log("INSIDE TABLE, value is");
console.log(value);
return (
<DropdownItem
key={i}>
<div value={key} onClick={this.changeStatusUpdateDropDownValue}>
{value}
</div>
</DropdownItem>
);
})}
</DropdownMenu>
</Dropdown>
);
这是渲染的地方:
<tbody>
{Object.entries(this.state.operationSavInformation).map(
([key, value]) =>
key !== "id" &&
(key === "Status" ? (
<tr key={key}>
<td>{key}</td>
<td>
{statusDropDown}
</td>
</tr>
) : (
<tr key={key}>
<td>{key}</td>
<td>
<strong>{value}</strong>
</td>
</tr>
))
)}
</tbody>
我做了一些研究,发现固定高度可能会解决这个问题:
const statusDropDown = (
<Dropdown
isOpen={this.state.statusUpdateDropDownOpen}
toggle={this.toggleStatusUpdateDropDown}
// scrollable={true}
>
<DropdownToggle className="my-dropdown" caret>
{this.state.statusUpdateDropDownValue}
</DropdownToggle>
<DropdownMenu style={{ maxHeight: "28px" }}>
{Object.entries(listeDesStatus).map(([key, value], i) => {
console.log("INSIDE TABLE, value is");
console.log(value);
return (
<DropdownItem
key={i}>
<div value={key} onClick={this.changeStatusUpdateDropDownValue}>
{value}
</div>
</DropdownItem>
);
})}
</DropdownMenu>
</Dropdown>
虽然这种解决了问题(我可以访问最后的项目),但由于某种原因,这对第一个元素造成了副作用。
此外,我真正想要的是修复下拉列表的高度并使其可滚动。例如:显示两个项目并查看其余项目,用户可以在下拉列表中向下滚动。
这可行吗?
【问题讨论】:
标签: javascript css reactjs bootstrap-4 reactstrap