unpkg/client/WindowSize.js

35 lines
693 B
JavaScript

import React from 'react'
import PropTypes from 'prop-types'
import addEvent from './utils/addEvent'
import removeEvent from './utils/removeEvent'
const ResizeEvent = 'resize'
class WindowSize extends React.Component {
static propTypes = {
onChange: PropTypes.func
}
handleWindowResize = () => {
if (this.props.onChange)
this.props.onChange({
width: window.innerWidth,
height: window.innerHeight
})
}
componentDidMount() {
addEvent(window, ResizeEvent, this.handleWindowResize)
}
componentWillUnmount() {
removeEvent(window, ResizeEvent, this.handleWindowResize)
}
render() {
return null
}
}
export default WindowSize