有没有办法只在scrollTo完成执行后执行一个函数?

时间:2018-04-12 18:48:55

标签: react-virtualized

我有一个<List>组件。我正在构建一个功能:

  1. 滚动到<List> 中的特定行。它使用scrollToIndex prop。
  2. 滚动到该行中的特定行。它通过执行document.getElementById('myId').scrollIntoView()
  3. 来完成此操作

    如何确保在步骤(1)之后发生步骤(2)?

    注意:我已经尝试了onRowsRendered()但看起来并不总是在scrollTo之后执行。

    文档是here,但不幸的是我很困难。

    编辑:如果以后有人遇到这个问题,我会在GitHub回购中找到有点的答案:

      

    您传入的onScroll道具绑定到每次滚动时触发的html onscroll事件。 scrollToIndex道具用于计算scrollTop,然后在html元素上手动设置。

    https://github.com/bvaughn/react-virtualized/issues/1077#issuecomment-381438215

1 个答案:

答案 0 :(得分:1)

请参阅https://stackoverflow.com/a/41111505/5683904

Kết quả đánh giá tính hợp lệ của HSĐXTC

为了滚动到DOM(2)中的特定div

  

的document.getElementById(&#39; MYID&#39)。scrollIntoView()

你必须确保已经渲染了dom。

// Keep track of last scroll position
_lastScrollTop;
_cellRangeRenderer(props) {
    this._rowSizeAndPositionManager = props.rowSizeAndPositionManager;
    if (props.isScrolling === false && this._lastScrollTop !== props.scrollTop) {
        // Only call this function if
        this._lastScrollTop = props.scrollTop;
        this.onAfterScroll();
    }
    return defaultCellRangeRenderer(props);
}

onAfterScroll(){
  //Do what you want to do after scrolling has stopped.
}