在不使用任何其他库的情况下,在 reactJs 中使用 id 滚动到特定的 div

Scroll to a particular div using id in reactJs without using any other library

在不使用任何其他库的情况下使用 react 中的 id 滚动到特定 div,我发现了一些他们使用滚动库的解决方案

这是我的 WrappedQuestionFormFinal 组件

中的 div 代码
 <div className="form-section">
            <Row>
              <Col xs={24} xl={4} className="form-section-cols">
                <h3 id={id}>
                  {t('QUESTION')} {t(id + 1)}
                </h3>
              </Col>
             </Row>
 </div>

这里是通过这个组件调用的嵌套组件

      <WrappedQuestionFormFinal
        allQuestions={questions}
        updateScreenTitle={this.props.updateScreenTitle}
        handleDeleteQuestion={this.handleDeleteQuestion}
        question={questions[q]}
        dublicateQuestion={dubQuestion}
        dependantQuestion={dependant}
        id={i}
        key={i}
        tags={this.props.tags}
        changeOrder={this.changeOrder}
        changeScreenNo={this.changeScreenNo}
      />,

我面临的问题是此表单有大约 10 个问题,如果在发生错误时提交,我必须滚动发生错误的页面。 Id 被赋予 h1 标签,它是唯一的

您尝试过使用 Ref 吗?

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

handleScrollToElement(event) {
  if (<some_logic>){
    window.scrollTo(0, this.myRef.current.offsetTop);
  }
}

render() {

  return (
    <div>
      <div ref={this.myRef}></div>
    </div>)
}

我使用 react ref 和 element.scrollIntoView 来实现这一点。

class App extends Component {
  constructor(props) {
    super(props);
    this.scrollDiv = createRef();
  }

  render() {
    return (
      <div className="App">
        <h1>Hello CodeSandbox</h1>
        <button
          onClick={() => {
            this.scrollDiv.current.scrollIntoView({ behavior: 'smooth' });
          }}
        >
          click me!
        </button>
        <h2>Start editing to see some magic happen!</h2>
        <div ref={this.scrollDiv}>hi</div>
      </div>
    );
  }
}

这是一个示例 codesandbox,演示了单击按钮并将元素滚动到视图中。