0

我正在渲染一个包含大量文本的 Dialog 组件,因此该对话框有一个滚动条。文本包含一些链接,当单击链接时,Dialog 的内容会发生变化。问题是,当内容发生变化时,滚动保持在链接高度的相同位置。当显示新内容时,我想滚动到对话框的顶部。

我为 Dialog 内容创建了一个类组件,并实现了使用 refs 和 scrollIntoView 滚动到 Dialog 顶部的 handleTop 函数。当从按钮单击事件 (TestButton) 调用此函数时,内容将滚动到顶部。但是,当从 componentDidMount() 调用此函数时,什么也没有发生。

export default class DialogContent extends React.Component {

constructor(props) {
  ...
  this.myRef=React.createRef();
}

handleTop = () => {
  this.myRef.current.scrollIntoView({
    behavior: 'smooth',
    block: 'start'
    });  
  };

  componentDidMount() {
      this.handleTop(); 
  }

render() {
  return (
    <div>
            <h1 ref={this.myRef}>Title</h1>
            <p>A lot of text</p>
            <Button>TestButton</Button>
    <div>
)
}

我还通过放置 console.log 消息验证了 componentDidMount 函数是否被调用。

任何想法或建议将不胜感激。

4

0 回答 0