mg-js
Version:
A set of useful functions, components and hooks.
26 lines (25 loc) • 1.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var useLazyScrolling = function (_a, callback) {
var _b = _a === void 0 ? {} : _a, _c = _b.distance, distance = _c === void 0 ? "0px" : _c, _d = _b.initPage, initPage = _d === void 0 ? 0 : _d;
var ref = (0, react_1.useRef)(null);
var refPage = (0, react_1.useRef)(initPage);
var Intersector = (0, react_1.useCallback)(function () {
return (0, jsx_runtime_1.jsx)("div", { style: { height: "1px", width: "1px" }, className: 'intersector', ref: ref });
}, []);
(0, react_1.useEffect)(function () {
var observer = new IntersectionObserver(function (_a) {
var isIntersecting = _a[0].isIntersecting;
console.log("intrersecting");
if (isIntersecting) {
callback(refPage.current++);
}
}, { root: null, rootMargin: distance });
observer.observe(ref.current);
return function () { return observer.unobserve(ref.current); };
}, []);
return { Intersector: Intersector };
};
exports.default = useLazyScrolling;