@etsoo/react
Version:
TypeScript ReactJs UI Independent Framework
38 lines (37 loc) • 1.17 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ScrollRestoration = ScrollRestoration;
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = __importDefault(require("react"));
const react_router_1 = require("react-router");
const useWindowScroll_1 = require("../uses/useWindowScroll");
const urls = {};
/**
* Scroll restoration
*/
function ScrollRestoration() {
// Location key
const { key } = (0, react_router_1.useLocation)();
// Mounted
const mounted = react_1.default.useRef(false);
// Detect scroll
const data = (0, useWindowScroll_1.useWindowScroll)();
if (mounted.current) {
urls[key] = data;
}
// Setup
react_1.default.useEffect(() => {
const pos = urls[key];
if (pos) {
window.scrollTo(pos.x, pos.y);
}
mounted.current = true;
return () => {
mounted.current = false;
};
}, [key]);
return (0, jsx_runtime_1.jsx)(react_1.default.Fragment, {});
}