react-use-scroll-position
Version:
A react hook to use scroll position
38 lines (37 loc) • 1.33 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = require("react");
var isBrowser = typeof window !== "undefined";
function getScrollPosition() {
return isBrowser ? { x: window.pageXOffset, y: window.pageYOffset } : { x: 0, y: 0 };
}
function useScrollPosition() {
var _a = react_1.useState(getScrollPosition()), position = _a[0], setScrollPosition = _a[1];
react_1.useEffect(function () {
var requestRunning = null;
function handleScroll() {
if (isBrowser && requestRunning === null) {
requestRunning = window.requestAnimationFrame(function () {
setScrollPosition(getScrollPosition());
requestRunning = null;
});
}
}
if (isBrowser) {
window.addEventListener('scroll', handleScroll);
return function () { return window.removeEventListener('scroll', handleScroll); };
}
}, []);
return position;
}
exports.useScrollPosition = useScrollPosition;
function useScrollXPosition() {
var x = useScrollPosition().x;
return x;
}
exports.useScrollXPosition = useScrollXPosition;
function useScrollYPosition() {
var y = useScrollPosition().y;
return y;
}
exports.useScrollYPosition = useScrollYPosition;
;