【问题标题】:ReactJS - Window.ScrollTo() not working on secondary scroll barReactJS - Window.ScrollTo() 在辅助滚动条上不起作用
【发布时间】:2018-05-08 07:59:13
【问题描述】:

对于我的 ReactJS 项目,我有一个简单的文本列表(使用 <ul><li> 标签),它有自己的滚动条来浏览列表,但不是整个页面。我可以用这个 css 代码做到这一点:

    #List-container {
        max-height: 425px;
        overflow: hidden;
        overflow-y: scroll;
    }

对于我的项目,我需要它自动向下滚动到列表底部。我尝试使用window.scrollTo(),但它不起作用,我很确定这是因为有一个辅助滚动条。

有谁知道我可以如何使用window.ScrollTo(),或者知道任何替代方案吗?

提前致谢!

【问题讨论】:

  • 应该是window.scrollTo 而不是ScrollTo
  • 谢谢,但我又试了一次,还是不行

标签: html css reactjs scroll


【解决方案1】:

我尝试了你的代码,我得到了一个预期的滚动条。

为了让某些东西自动滚动到底部,我会这样做:

let wHeight = window.innerHeight;
window.scrollY = wHeight;

这是我能想到的最简单的滚动到页面底部的方法。您可以将 window 替换为您想要在 DOM 中选择的任何内容。

要滚动到列表底部,只需写:

let divHeight = document.getElementById('List-container');
window.scrollY = divHeight.offsetHeight;

【讨论】:

  • .getElementByID 是否有更多“Reactjs-ly”替代方案?可能只是我,但我觉得 .getElementByID 并不真正适合 ReactJS
  • 有,但我不能说它是好是坏。 getElementById 在选择元素时尽可能接近 DOM。但是使用 React 你有“r​​efs”,你可以在其中设置例如
    并且你可以稍后使用 this.refs.myReactDiv 选择它。希望这会有所帮助!
  • window.scrollY 不只是 read-only 属性吗?怎么修改?
【解决方案2】:

您需要获取ListContainer 的参考,然后在其上设置scrollTop

<ListContainer ref={ref => this.listContainer = ref} />

并像使用它

const container = ReactDOM.findDOMNode(this.listContainer);
container.scrollTop = "125px"

【讨论】:

  • 在第一行,this.listContainer 代表什么?
  • 它是 ListContainer 组件的引用,请查看此处了解更多详情 stackoverflow.com/questions/38093760/…
  • 因此,如果我愿意,我可以将this.listContainer 更改为我想要的任何名称——因为它是在该行中定义的?我说的对吗?
  • @Ben10,你可以给任何你想要的名字。
  • 很抱歉问了这么多问题,但还是不行。我是在 reactjs 生命周期的错误部分设置了 const container 还是没关系?'
猜你喜欢
相关资源
最近更新 更多
热门标签