import React, { Component } from "react" import ReactDom from "react-dom" import "./overlay.scss" const root = document.body || document.documentElement const events = ["touchmove", "mousewheel"] class Overlay extends Component { constructor(props) { super(props) this.overlayBox = null } preventScroll = (e) => { e.preventDefault() } componentDidMount() { events.forEach((item) => { this.overlayBox.addEventListener(item, this.preventScroll, { passive: false, }) }) } componentWillUnmount() { events.forEach((item) => { this.overlayBox.removeEventListener(item, this.preventScroll) }) } render() { return ReactDom.createPortal( <div className={"overlay"} ref={(el) => (this.overlayBox = el)} style={{ top: `${window.scrollY}px` }} > {this.props.children} </div>, root ) } } export default Overlay