Rok*_*Rok 7 reactjs react-hooks
如何向refusing ReactJS Hooks(版本 16.8.+)添加事件侦听器?
这是一个示例,我尝试使用溢出自动获取某些 div 的滚动位置。updateScrollPosition永远不会被调用。
function Example(props) {
scroller = useRef();
useEffect(() => {
function updateScrollPosition() {
// update the scroll position
}
if (scroller && scroller.current) {
scroller.current.addEventListener("scroll", updateScrollPosition, false);
return function cleanup() {
scroller.current.removeEventListener("scroll", updateScrollPosition, false);
};
}
});
return (
<div ref={scroller}>
<div className="overflow-auto">
some text
</div>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
我感谢您的帮助
问题是您的外部 div 不会滚动,而是我们的内部 div 将滚动,因此scroll事件不会在外部 div 上触发。将您的 ref 更改为内部 div,它应该可以工作
function Example(props) {
const scroller = useRef();
useEffect(() => {
function updateScrollPosition() {
// update the scroll position
}
if (scroller && scroller.current) {
scroller.current.addEventListener("scroll", updateScrollPosition, false);
return function cleanup() {
scroller.current.removeEventListener("scroll", updateScrollPosition, false);
};
}
}, []);
return (
<div>
<div ref={scroller} className="overflow-auto">
some text
</div>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9943 次 |
| 最近记录: |