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;