袋鼠云数栈UED团队:优秀数据中台产品的探索与挑战

我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。

本文作者:修能

数栈产品里的Descriptions组件实际上就是antd的Descriptions组件。在数栈产品中,我们通常使用的方式是bordered + small的模式,如下所示:

<Descriptions bordered size="small">
  <Descriptions.Item label="任务名称">
    {taskName}
  </Descriptions.Item>
  <Descriptions.Item label="指标表名称">
    {tableName}
  </Descriptions.Item>
</Descriptions>

这种展示方式看起来平平无奇,甚至非常普通。但实际上,其中蕴含了一些玄机。

我们想要实现一行只有一个Item的设计方式。为了实现这一点,我们可以借助Descriptions组件的column API。

通过设置 <Descriptions bordered size="small" column={1}> ,我们可以实现如下效果:

此时,一位同事发出疑惑:“怎么就这么宽了?”

这时,我们尝试根据设计稿的尺寸给设置宽度,但由于模块是在详情的抽屉里,抽屉的宽度是不固定的,因此设置固定值会导致问题。

此时,我们需要模拟一下任务名称很长并且使用Button组件的情况。

我们尝试使用EllipsisText组件解决溢出省略的问题,但貌似并没有生效。这是为何呢?

分析原因如下:通过设置maxWidth为百分比,然后配合overflow。但我们发现,tr元素的宽度并没有按照我们设想的继承父元素的宽度,而是被子元素撑开了。

观察到,这里的table组件上有table-layout属性,如果设置为auto,则表示默认情况下,表格及其单元格的宽度会根据内容自动调整大小。

然而,Descriptions组件默认的table-layout是auto,且并没有相关的属性去修改这个值。因此,我们只能通过全局的CSS去修改,或者在指标里重写Descriptions组件,让用户可控地去使用Descriptions组件。

欢迎关注【袋鼠云数栈UED团队】~ 袋鼠云数栈UED团队持续为广大开发者分享技术成果,相继参与开源了欢迎star:

  • 大数据分布式任务调度系统——Taier
  • 轻量级的Web IDE UI框架——Molecule
  • 针对大数据领域的SQL Parser项目——dt-sql-parser
  • 袋鼠云数栈前端团队代码评审工程实践文档——code-review-practices
  • 一个速度更快、配置更灵活、使用更简单的模块打包器——ko
  • 一个针对antd的组件测试工具库——ant-design-testing

标签:游戏攻略