React-virtualized 中对 registerChild 的 CellMeasurer 支持

Posted

技术标签:

【中文标题】React-virtualized 中对 registerChild 的 CellMeasurer 支持【英文标题】:CellMeasurer support of registerChild in react-virtualized 【发布时间】:2020-08-11 00:09:39 【问题描述】:

在 CellMeasurer 中使用渲染道具 registerChild 作为 ref 似乎被 react-virtualized 忽略:警告 findDOMNode is deprecated 仍然收到。

那条评论:

https://github.com/bvaughn/react-virtualized/issues/1353#issuecomment-569814307 让我觉得这个修复已经 4 个月大了,最新版本的 react-virtualized 是 6 个月前发布的

虽然文档中已经提到过 https://github.com/bvaughn/react-virtualized/blob/master/docs/CellMeasurer.md#using-registerchild,但错误地:

      (registerChild) => (
        <div
          style=
            ...style,
            height: 35,
            whiteSpace: 'nowrap'
          
        >
          content
        </div>
      )

div 似乎缺少 ref=registerChild ! 无论如何,在 div 上有或没有 ref=registerChild, 仍然收到警告 findDOMNode 已弃用

【问题讨论】:

【参考方案1】:

registerChild 的目的是为 cellMeasurer 提供一个指向子组件的引用,从而无需调用 findDomNode。目前没有使用 registerChild 变量,需要添加 set 子组件的 ref 到 registerChild。

  (registerChild) => (
    <div
      ref=registerChild
      style=
        ...style,
        height: 35,
        whiteSpace: 'nowrap'
      
    >
      content
    </div>
  )

【讨论】:

以上是关于React-virtualized 中对 registerChild 的 CellMeasurer 支持的主要内容,如果未能解决你的问题,请参考以下文章

如何滚动到通过 react-virtualized 呈现的 React 元素?

react 分页器 基于react-virtualized组件的分页器

React-virtualized - 是不是可以在窗口调整大小时更新 rowHeights?

React-virtualized 动态高度列表呈现最初堆叠的所有内容

react-virtualized WindowScroller 性能问题

有没有办法通过 react-virtualized 将 ref 设置为 List ?