如何使用Reaction实现“滚动检测”功能?我想向用户显示一个带有给定消息的div,并仅在用户滚动该复选框后启用该复选框。这是我目前的实现,但不起作用。
function Disclaimer({ text, checkboxText }) {
const divRef = useRef();
const [userHasReviewed, setUserHasReviewed] = useState(false);
const scrollTracker = () => {
if (divRef.current) {
const { scrollTop, scrollHeight, clientHeight } =
divRef.current;
if (scrollTop + clientHeight === scrollHeight) {
setUserHasReviewed(true);
}
}
};
return (
<div>
<div
ref={divRef}
onScroll={() => scrollTracker()}
>
{text}
</div>
<div>
<Checkbox
label={checkboxText}
disabled={!userHasReviewed}
/>
</div>
</div>
);
}
我在scrollTracker
函数中放置了调试点,但调试器从未进入该函数。我认为这是因为文本不够大,不足以实际溢出,需要滚动空间/操作。在这种情况下,我如何自动检测这一点,以便将userHasReviewed
自动设置为true
?
1条答案
按热度按时间eh57zj3b1#
如果元素不可滚动,则onScroll方法不会激发。默认情况下,元素是不可滚动的,您必须为该div设置css属性
overflow:scroll
。但是,如果这不是您要找的,那么您需要的是交集观察者API。阅读MDN文档here.,它可以观察元素和顶级文档的视区之间的交集。您可以点击该信息并显示该复选框。