设置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节点的滚动位置?
答案 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;
}
}