【问题标题】:React scrollTop=0 for componentDidMount not working:为 componentDidMount 反应 scrollTop=0 不起作用:
【发布时间】:2016-05-19 18:23:43
【问题描述】:

我有以下组件和来自控制台日志的结果。我的scrollTop = 500没有错误,但是当我刷新页面时没有相应调整。谢谢。

componentDidMount: function () {
  console.log(this);
  ReactDOM.findDOMNode(this).scrollTop=500;
}

【问题讨论】:

  • 请修复您发布的代码。将日志移动到新的代码块并修复缩进(或完全删除它)。很难说这么少的信息有什么问题,你可能想创建一个 jsfiddle 来重现这个问题。
  • 有没有可能thiscomponentDidMount 之后没有足够的高度来滚动?一个可能的原因可能是您正在等待 componentDidMount 之后的数据呈现。

标签: reactjs scrollto


【解决方案1】:

这也发生在我身上。 在应用程序的一个地方,我发现的解决方案是设置一个setTimeout 函数:

componentDidMount() {
  setTimeout(() => {
    document.body.scrollTop=500;      
  })
}

但相同的解决方案不适用于其他组件。 在这种情况下,解决方案是将history.scrollRestoration 设置为manual

if ('scrollRestoration' in history) {
  history.scrollRestoration = 'manual';
}

我希望有人能找到更一致、更少经验的东西。

【讨论】:

  • 谢谢! setTimout() 为我工作。只有在 Firefox 中存在一个错误,即如果没有 setTimeout(),scrollTop 或 scrollToTop 就不会触发。
  • 另外,如果其他人有问题,我不得不稍微延迟一下。就我而言,100 毫秒的延迟就足够了:setTimeout(() => { ... }, 100);
猜你喜欢
  • 2016-05-13
  • 2021-01-29
  • 1970-01-01
  • 2016-08-01
  • 2019-04-15
  • 1970-01-01
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多