我正在构建一个允许我调整其宽度的 ReactJS 网格组件。调整大小是通过单击grip组件的 div 并向左或向右拖动来完成的。我的代码:
class Cell extends Component {
handleGrip = event => {
if (this.props.onGrip) this.props.onGrip(event);
};
render() {
let gripComponent = (
<div
onMouseDown={this.handleGrip}
className="cell-grip"
/>
);
let width = this.props.width;
return (
<div
className={"cell-container"}
style={{ width: width }}
>
<div className="cell-content">{this.props.children}</div>
{gripComponent}
</div>
);
}
}
export default Cell;
SCSS类:
.cell-container {
width: 100%;
border: 1px solid $ux-theme-color-border;
margin: 0 -1px 0 0;
background-color: $ux-theme-color-white;
display: flex;
flex-direction: row;
}
.cell-content {
flex-shrink: 1;
width: 100%;
padding: 5px;
font-size: 12px;
}
.cell-grip {
flex-shrink: 0;
width: 5px;
min-width: 5px;
cursor: ew-resize;
background-color: $ux-theme-color-border;
}
(这里没有展示完整的宽度计算和事件处理)
一切正常,除了一件事。组件在其内容右侧的gripflexbox 中呈现。当宽度变小时,grip不会渲染,因此我无法再选择它。如果单元格太小,这会导致我无法调整单元格的大小,因为没有grip显示可供选择。检查之前和之后的图像:
前:
调整大小后:
一旦单元格的grip宽度变得小于内容的宽度 ( cell-content) 就会消失(第一个弹性项目确实显示)。
我怎样才能防止这种情况发生并保证grip将显示在任何宽度上?

