[英]Scrolling to DOM Element in React
我正在使用 react 16.4,我需要滾動到應用程序中的 DOM 元素。 因為refs
現在在 react 中被棄用了,所以我正在尋找最干凈的方法來實現這一點。
但是從我的角度來看,很難找到沒有ref
並且沒有像這樣直接操作 DOM 的解決方案:
document.getElementById("questions").lastElementChild.scrollIntoView({
behavior: "smooth"
});
目前做這樣的事情的最佳方法是什么?
此致
你仍然可以使用React.createRef()
。 只有字符串引用和回調被棄用/正在被棄用。
import React, {Component, createRef} from 'react'
class App extends Component {
myRef = createRef() // Create a ref object
scrollToRef = () =>
window.scrollTo(0, this.myRef.current.offsetTop);
render() {
return <div ref={this.myRef}></div>
}
}
React.createRef
是在16.3
中引入的,所以你可以使用它。 將它放在一個元素上,並在current
屬性(即 DOM 節點)上使用scrollIntoView
方法。
例子
class App extends React.Component { bottomRef = React.createRef(); onClick = () => { this.bottomRef.current.scrollIntoView(); }; render() { return ( <div> <button onClick={this.onClick}>Scroll to bottom</button> <div style={{ height: 2000 }} /> <div ref={this.bottomRef}>bottom</div> </div> ); } } ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script> <div id="root"></div>
嘗試使用組件為垂直滾動設置動畫https://www.npmjs.com/package/react-scroll
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.