diff --git a/components/layout/Page.js b/components/layout/Page.js index 28492ddf..3fbd7673 100644 --- a/components/layout/Page.js +++ b/components/layout/Page.js @@ -2,6 +2,25 @@ import React from 'react'; import classNames from 'classnames'; import styles from './Page.module.css'; -export default function Page({ className, children }) { - return
{children}
; +export default class Page extends React.Component { + getSnapshotBeforeUpdate() { + if (window.pageXOffset === 0 && window.pageYOffset === 0) return null; + + // Return the scrolled position as the snapshot value + return { x: window.pageXOffset, y: window.pageYOffset }; + } + + /* eslint-disable no-unused-vars */ + componentDidUpdate(prevProps, prevState, snapshot) { + if (snapshot !== null) { + // Restore the scrolled position after re-rendering + window.scrollTo(snapshot.x, snapshot.y); + } + } + /* eslint-enable no-unused-vars */ + + render() { + const { className, children } = this.props; + return
{children}
; + } }