概述

该文档提供了代码库的概述,希望能够鼓励新的贡献者。请提出问题或鼓励我们在您认为会帮助您的地方添加更多详细信息。

说明#

公开API#

  • FixedDataTableRoot.js
    • 提供公共出口
  • FixedDataTableContainer.js
    • 组件树的顶层
    • 用Redux存储包装实际表组件
  • FixedDataTable.js
    • 对表行使用FixedDataTableBufferedRows
    • 将FixedDataTableRow用于表的表头和表尾
  • FixedDataTableCellDefault.js
    • 提供单元格
    • 默认FDT单元组件
  • FixedDataTableColumn.js
    • 提供专栏
    • 配置用于呈现标头和单元格的模板
    • 还配置列详细信息,例如宽度,可调整大小,可重新排序,固定等
  • FixedDataTableColumnGroup.js
    • 提供ColumnGroup
    • 配置渲染头的模板
    • 还配置列组是否固定

表渲染/组件树#

  • FixedDataTableBufferedRows.js
    • 呈现可见的表行(加上一些缓冲的行)
    • 使用FixedDataTableRow
  • FixedDataTableRow.js
    • 渲染一行
    • 也用于表头和表尾
    • 呈现FixedDataTableCellGroup,每个固定,滚动和fixedRight列
  • FixedDataTableCellGroup.js
    • 渲染一个包含一行单元格的div
    • 还处理单元格回收
    • 单个单元格的渲染是通过FixedDataTableCell完成的
  • FixedDataTableCell.js
    • 使用指定的单元格或标题组件渲染单个单元格
    • 处理列重新排序显示逻辑
    • 还呈现列调整大小和重新排序句柄

附加组件#

  • Scrollbar.js
    • 渲染表格的水平和垂直滚动条
    • 由FixedDataTable.js使用
  • ColumnResizerLine.js
    • 调整列大小时渲染显示的行
    • 由FixedDataTable.js使用
  • FixedDataTableColumnReorderHandle.js
    • 渲染用于重新排序列的旋钮
    • 由FixedDataTableCell.js使用

国家管理#

  • scrollAnchor.js
    • 查找垂直滚动条“锚定”
    • 滚动锚确定第一行/最后一行的索引和距表边缘的偏移量
  • computeRenderedRows.js
    • 使用滚动锚点查找视口中显示的行范围
    • 它还使用以下命令更新这些行的高度 updateRowHeight
  • updateRowHeight.js
    • 更新行高度,对其进行缓存并保持总滚动高度同步
  • columnStateHelper.js
    • 查找水平滚动偏移
    • 还管理列的重新排序和大小调整

选择器#

  • ariaAttributes.js
    • 计算要提供给我们的列,行,单元格等的aria角色和属性
  • columnTemplates.js
    • 查找单元格的属性和模板(渲染器),并将其分类为有用的格式
    • 与convertColumnElementsToData共享许多逻辑,并依赖columnWidths
    • 确实需要重构/清理/消除
  • columnWidths.js
    • 查找每列(和列组(如果存在)的宽度)
    • 还计算弯曲宽度
    • 确定最大水平滚动
  • roughHeights.js
    • 计算内容查看视口的尺寸估算值
    • 考虑滚动条的存在,因此给出最小/最大尺寸
    • 还决定缓冲行的数量
  • scrollbarsVisible.js
    • 计算滚动条状态(即,它应该可见还是不需要)
    • 还计算视口可用的高度
  • tableHeights.js
    • 计算表格的不同组件(完整表格,视口,滚动条等)的高度和偏移量

助手#

  • ReactTouchHandler.js
    • 处理触摸事件并将其转换为滚动事件
    • 由FixedDataTable.js使用
    • 半实验
  • FixedDataTableTranslateDOMPosition.js
    • 填充Facebook的translationDOMPositionXY的助手,以用于服务器端渲染
  • convertColumnElementsToData.js
    • 解析列(作为React组件传递)
    • 提供表头,表尾和内容的模板(单元格渲染器)
    • 还提取柱特定属性(如width,pureRendering等)
  • shallowEqualSelector.js
    • 创建仅在对参数进行浅等式检查失败时才重新计算的选择器
    • 用于创建我们的大多数选择器

公开API索引#

  • 表格(FixedDataTableContainer.js)
  • 单元格(FixedDataTableCellDefault.js)
  • 列(FixedDataTableColumnColumn.js)
  • ColumnGroup(FixedDataTableColumnColumnGroup.js)