/** * Copyright (c) 2015-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @providesModule LazyRenderer */ 'use strict'; const React = require('React'); const createReactClass = require('create-react-class'); const PropTypes = require('prop-types'); const TimerMixin = require('react-timer-mixin'); const LazyRenderer = createReactClass({ displayName: 'LazyRenderer', mixin: [TimerMixin], propTypes: { render: PropTypes.func.isRequired, }, UNSAFE_componentWillMount: function(): void { this.setState({ _lazyRender : true, }); }, componentDidMount: function(): void { requestAnimationFrame(() => { this.setState({ _lazyRender : false, }); }); }, render: function(): ?React.Element { return this.state._lazyRender ? null : this.props.render(); }, }); module.exports = LazyRenderer;