当前位置: 首页 > 知识库问答 >
问题:

在react中渲染后滚动到页面顶部。js

松桐
2023-03-14

我有一个问题,我没有办法解决。在react组件中,我在底部显示了一长串数据和几个链接。在点击任何一个链接后,我用新的链接集合填写列表,并需要滚动到顶部。

问题是-呈现新集合后如何滚动到顶部?

'use strict';

// url of this component is #/:checklistId/:sectionId

var React = require('react'),
  Router = require('react-router'),
  sectionStore = require('./../stores/checklist-section-store');


function updateStateFromProps() {
  var self = this;
  sectionStore.getChecklistSectionContent({
    checklistId: this.getParams().checklistId,
    sectionId: this.getParams().sectionId
  }).then(function (section) {
    self.setState({
      section,
      componentReady: true
    });
  });

    this.setState({componentReady: false});
 }

var Checklist = React.createClass({
  mixins: [Router.State],

  componentWillMount: function () {
    updateStateFromProps.call(this);
  },

  componentWillReceiveProps(){
    updateStateFromProps.call(this);
   },

render: function () {
  if (this.state.componentReady) {
    return(
      <section className='checklist-section'>
        <header className='section-header'>{ this.state.section.name }   </header>
        <Steps steps={ this.state.section.steps }/>
        <a href=`#/${this.getParams().checklistId}/${this.state.section.nextSection.Id}`>
          Next Section
        </a>
      </section>
    );
    } else {...}
  }
});

module.exports = Checklist;

共有3个答案

魏朗
2023-03-14

你可以用这样的东西。ReactDom是用于反应的。只是反应否则。

    componentDidUpdate = () => { ReactDom.findDOMNode(this).scrollIntoView(); }

React 16更新5/11/2019

  constructor(props) {
    super(props)
    this.childDiv = React.createRef()
  }

  componentDidMount = () => this.handleScroll()

  componentDidUpdate = () => this.handleScroll()

  handleScroll = () => {
    const { index, selected } = this.props
    if (index === selected) {
      setTimeout(() => {
        this.childDiv.current.scrollIntoView({ behavior: 'smooth' })
      }, 500)
    }
  }
漆雕绍晖
2023-03-14

由于最初的解决方案是为非常早期的反应版本提供的,这里有一个更新:

constructor(props) {
    super(props)
    this.myRef = React.createRef()   // Create a ref object 
}

componentDidMount() {
  this.myRef.current.scrollTo(0, 0);
}

render() {
    return <div ref={this.myRef}></div> 
}   // attach the ref property to a dom element
孔安福
2023-03-14

最后我用过:

componentDidMount() {
  window.scrollTo(0, 0)
}

编辑:反应v16.8

useEffect(() => {
  window.scrollTo(0, 0)
}, [])
 类似资料:
  • 问题内容: 我有一个问题,我不知道如何解决。在我的react组件中,我在底部显示一长串数据和少量链接。单击任何此链接后,我将在列表中添加新的链接集合,并需要滚动到顶部。 问题是- 呈现新集合 后 如何滚动到顶部? 问题答案: 由于原始解决方案是为 react的 早期版本提供的,因此这里进行了更新:

  • 问题内容: 每次在React.js中执行渲染时,UI都会滚动到页面顶部。 JSFiddle:http : //jsfiddle.net/bengrunfeld/dcfy5xrd/ 有什么漂亮或 反应性的 方式可以阻止这种情况吗? 例如,如果用户向下滚动页面,然后按下导致渲染的按钮,则UI将保持与以前相同的滚动位置。 更新:为什么UI滚动到某些渲染的顶部,而不滚动到其他渲染? 问题答案: @floy

  • 问题内容: 使用Python和Selenium时,我在滚动到网页顶部时遇到问题。 当页面由于某种原因加载时,您将被带到页面底部(这是固定的)。但是,当我尝试滚动到顶部时,它不起作用。 我尝试了以下方法: 和 我也尝试过找到该元素,然后滚动到它: 向下滚动到元素时,上面的scrollIntoView()代码适用。但是,它无法向上滚动。 我已经尝试过运行Chrome驱动程序和PhantomJs。 有什

  • 问题内容: 如何使用JavaScript滚动到页面顶部?即使滚动条立即跳到顶部也是可取的。我不是在寻找平滑的滚动。 问题答案: 如果您不需要更改以进行动画处理,则无需使用任何特殊的插件-我只需要使用本机JavaScript window.scrollTo方法- 传入0,0即可将页面立即滚动到左上角。 参量 x坐标是沿水平轴的像素。 y坐标是沿垂直轴的像素。

  • 我正在使用html2canvas进行截图和附加图像。这些工作正常,但完成后总是滚动到页面顶部。我需要根据div id或class滚动pacific div。以下是我使用的代码: 请尝试使用以下代码: 这对我不起作用。

  • 我在onLoad上使用下面的代码进入页面顶部。window.scroll到(0,0)在Javascript中,它适用于浏览器,但不适用于任何移动设备。