useOnScrollToBottom implemented

This commit is contained in:
nklhrstv 2022-06-27 15:59:47 +03:00
parent b3e7b4a31a
commit 62c2c8438a
2 changed files with 22 additions and 0 deletions

View file

@ -36,6 +36,7 @@ const useDeepEqualState = require('./useDeepEqualState');
const useFullscreen = require('./useFullscreen');
const useLiveRef = require('./useLiveRef');
const useModelState = require('./useModelState');
const useOnScrollToBottom = require('./useOnScrollToBottom');
const useProfile = require('./useProfile');
const useStreamingServer = require('./useStreamingServer');
@ -78,6 +79,7 @@ module.exports = {
useFullscreen,
useLiveRef,
useModelState,
useOnScrollToBottom,
useProfile,
useStreamingServer
};

View file

@ -0,0 +1,20 @@
const React = require('react');
const useOnScrollToBottom = (cb, threshold = 0) => {
const triggeredRef = React.useRef(false);
const onScroll = React.useCallback((event) => {
if (event.target.scrollTop + event.target.clientHeight >= event.target.scrollHeight - threshold) {
if (!triggeredRef.current) {
triggeredRef.current = true;
if (typeof cb === 'function') {
cb(event);
}
}
} else {
triggeredRef.current = false;
}
}, [cb]);
return onScroll;
};
module.exports = useOnScrollToBottom;