【问题标题】:Fill remaining space in react-virtualized Grid if total columns width is less than Grid width如果总列宽度小于网格宽度,则填充反应虚拟化网格中的剩余空间
【发布时间】:2018-06-24 15:00:39
【问题描述】:

我使用带有交替行背景颜色的 Grid 组件。

在我的应用程序中,我可以动态选择要显示的列。如果列的总宽度超过网格的宽度,没问题。但是如果总宽度小于网格的宽度,我想用与我的单元格相同的背景颜色填充剩余的空白空间。我不想更改列的宽度以适应 Grid 的宽度。 有没有简单的方法可以做到这一点?

我尝试使用 prop cellRangeRenderer(如文档 https://github.com/bvaughn/react-virtualized/blob/master/docs/Grid.md#cellrangerenderer 中所述),但它似乎无法解决我的要求。 我必须分叉 defaultCellRangeRenderer 函数吗?

screenshot

提前致谢

【问题讨论】:

    标签: react-virtualized


    【解决方案1】:

    假设您想用交替的颜色填充剩余空间(从您的问题中不完全清楚),那么您有两个选择。

    对于这两个选项,您都需要检测可见列的宽度何时小于Grid 的宽度。 (您没有分享您的源代码,因此我不会就具体如何执行此操作提出建议。不过应该足够简单!)

    选项 1:cellRangeRenderer

    分叉default cellRangeRenderer。当您的 Grid 的列太少而无法填充时,请在每行右侧渲染一个空 div(以填充剩余宽度)覆盖右侧的 style 道具-每行中的大多数单元格以使其填充剩余的宽度。

    选项 2:columnWidth 函数

    使用columnWidth 函数(根据您的屏幕截图,您似乎已经在这样做了)。当您的 Grid 的列太少而无法填充时,只需为最右边的可见列返回不同的大小(以便填充剩余空间)。

    请注意,您需要让Grid 知道给定列的宽度何时发生变化。您可以通过调用gridRef.recomputeGridSize({ columnIndex: indexOfRightMostColumn }) 来完成此操作。

    【讨论】:

    • 选项 1 效果很好,只需添加 containerStyle={{ overflow: 'visible' }} 作为 Grid 属性。非常感谢您花时间回答我的问题。
    • @bvaughn,这不是一个解决方案,ER 应该像默认表组件那样,为每一列填充空白空间
    猜你喜欢
    • 2019-08-21
    • 1970-01-01
    • 2013-09-28
    • 2011-12-20
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 2011-04-08
    相关资源
    最近更新 更多