gpt4 book ai didi

reactjs - 如何将事件监听器添加到引用?

转载 作者:行者123 更新时间:2023-12-04 04:31:27 25 4
gpt4 key购买 nike

如何向 添加事件监听器ref 使用 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>
);
}

我感谢您的帮助

最佳答案

问题是您的外部 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>
);
}

关于reactjs - 如何将事件监听器添加到引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58855030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com