प्रतिक्रिया 16.8 +, कार्यात्मक घटक
import React, { useRef } from 'react'
const scrollToRef = (ref) => window.scrollTo(0, ref.current.offsetTop)
// General scroll to element function
const ScrollDemo = () => {
const myRef = useRef(null)
const executeScroll = () => scrollToRef(myRef)
return (
<>
<div ref={myRef}>I wanna be seen</div>
<button onClick={executeScroll}> Click to scroll </button>
</>
)
}
StackBlits पर पूर्ण डेमो के लिए यहां क्लिक करें
प्रतिक्रिया 16.3 +, कक्षा घटक
class ReadyToScroll extends Component {
constructor(props) {
super(props)
this.myRef = React.createRef()
}
render() {
return <div ref={this.myRef}></div>
}
scrollToMyRef = () => window.scrollTo(0, this.myRef.current.offsetTop)
// run this method to execute scrolling.
}
क्लास कंपोनेंट - रिफबैक कॉलबैक
class ReadyToScroll extends Component {
myRef=null
// Optional
render() {
return <div ref={ (ref) => this.myRef=ref }></div>
}
scrollToMyRef = () => window.scrollTo(0, this.myRef.offsetTop)
// run this method to execute scrolling.
}
स्ट्रिंग रेफरी का उपयोग न करें।
स्ट्रिंग refs नुकसान के प्रदर्शन, नहीं कर रहे हैं, और उनकी राह से बाहर (अगस्त 2018)।
स्ट्रिंग रिफ में कुछ मुद्दे होते हैं, जिन्हें विरासत माना जाता है, और भविष्य के रिलीज में से एक में हटाए जाने की संभावना है। [आधिकारिक प्रतिक्रिया दस्तावेज]
संसाधन 1 संसाधन 2
वैकल्पिक: Smoothe स्क्रॉल एनीमेशन
/* css */
html {
scroll-behavior: smooth;
}
एक बच्चे को पासिंग रेफरी
हम चाहते हैं कि रेफ एक डोम तत्व से जुड़ा हो, न कि किसी रिएक्शन कंपोनेंट से। इसलिए इसे एक बच्चे के घटक के पास करते समय हम प्रोप रेफरी का नाम नहीं दे सकते।
const MyComponent = () => {
const myRef = useRef(null)
return <ChildComp refProp={myRef}></ChildComp>
}
फिर रेफ प्रोप को डोम तत्व से जोड़ दें।
const ChildComp = (props) => {
return <div ref={props.refProp} />
}