import React from 'react'; import PropTypes from 'prop-types'; export default class GIFV extends React.PureComponent { static propTypes = { src: PropTypes.string.isRequired, alt: PropTypes.string, lang: PropTypes.string, width: PropTypes.number, height: PropTypes.number, onClick: PropTypes.func, }; state = { loading: true, }; handleLoadedData = () => { this.setState({ loading: false }); }; componentWillReceiveProps (nextProps) { if (nextProps.src !== this.props.src) { this.setState({ loading: true }); } } handleClick = e => { const { onClick } = this.props; if (onClick) { e.stopPropagation(); onClick(); } }; render () { const { src, width, height, alt, lang } = this.props; const { loading } = this.state; return (
{loading && ( )}
); } }