在 React 中单击时滚动到一个元素
在 React 中点击滚动到一个元素:
- 在要滚动到的元素上设置
ref
属性。 - 在另一个元素上设置
onClick
属性。 - 每次点击元素时,调用 ref 对象的
scrollIntoView()
方法。
import {useRef} from 'react';
export default function App() {
const ref = useRef(null);
const handleClick = () => {
ref.current?.scrollIntoView({behavior: 'smooth'});
};
return (
<div>
<button onClick={handleClick}>Scroll to element</button>
<div style={{height: '155rem'}} />
<div ref={ref}>Some content here</div>
<div style={{height: '155rem'}} />
</div>
);
}
我们使用 useRef
钩子初始化了一个 ref。
useRef()
钩子可以传递一个初始值作为参数。 该钩子返回一个可变的 ref 对象,其 .current 属性被初始化为传递的参数。
请注意
,我们必须访问 ref 对象的 current 属性才能访问我们设置 ref 属性的 div 元素。
当我们将 ref prop 传递给元素时,例如 <div ref={myRef} />
,React 将 ref 对象的 .current 属性设置为对应的 DOM 节点。
我们在 button 元素上设置了 onClick 属性,所以每次点击它都会调用 handleClick
函数。
const handleClick = () => {
ref.current?.scrollIntoView({behavior: 'smooth'});
};
在 handleClick
函数中,我们使用 scrollIntoView
方法滚动到设置了 ref 属性的 div 元素。
behavior
属性指定滚动应该平滑(smooth
)还是立即发生(auto
)。
behavior
属性的默认值为 auto
。
每次单击按钮时,都会在我们设置了 ref 属性的元素上调用 scrollIntoView()
方法,并且该元素对用户可见。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。