如何设置ReactDOM节点的scrollTop属性?

时间:2017-12-19 17:43:15

标签: javascript reactjs scroll scrolltop react-dom

设置React节点的scrollTop属性不起作用。

我在使用列表导航到页面时,尝试恢复列表的滚动位置。

目前我的代码如下:

  componentDidMount() {
    let prevScrollHeight = Number(localStorage.getItem('listHeight'));

    if (prevScrollHeight >= 0) {
      let listNode = ReactDOM.findDOMNode(this.refs.speakersList);
      listNode.scrollTop = prevScrollHeight;
    }
  }

滚动高度已成功存储在本地存储中。什么不起作用是:listNode.scrollTop = prevScrollHeight

有谁知道如何设置React节点的滚动位置?

1 个答案:

答案 0 :(得分:0)

找出问题...如果您遇到同样的问题,以便将来参考 - 解决方案是将设置scrolltop的功能放在setTimeout中。看起来它与JavaScript事件循环有关,setTimeout将函数放在队列的后面。

工作代码:

componentDidMount() {
  setTimeout(this.setScrollTop.bind(this))
}

setScrollTop() {
  let prevScrollHeight = Number(localStorage.getItem('listHeight'));

  if (prevScrollHeight >= 0) {
    let listNode = ReactDOM.findDOMNode(this.refs.speakersList);
    listNode.scrollTop = prevScrollHeight;
  }
}