text: /**
   * Copyright (c) 2015-present, Facebook, Inc.
   * All rights reserved.
   *
   * This source code is licensed under the BSD-style license found in the
   * LICENSE file in the root directory of this source tree. An additional grant
   * of patent rights can be found in the PATENTS file in the same directory.
   *
   * @providesModule StaticContainer.react
   * @flow
   */
  'use strict';
  
  const React = require('../react-native/React');
  
  /**
   * Renders static content efficiently by allowing React to short-circuit the
   * reconciliation process. This component should be used when you know that a
   * subtree of components will never need to be updated.
   *
   *   const someValue = ...; // We know for certain this value will never change.
   *   return (
   *     <StaticContainer>
   *       <MyComponent value={someValue} />
   *     </StaticContainer>
   *   );
   *
   * Typically, you will not need to use this component and should opt for normal
   * React reconciliation.
   */
  class StaticContainer extends React.Component<Object> {
  
    shouldComponentUpdate(nextProps: Object): boolean {
      return !!nextProps.shouldUpdate;
    }
  
    render() {
      const child = this.props.children;
      return (child === null || child === false)
        ? null
        : React.Children.only(child);
    }
  
  }
  
  module.exports = StaticContainer;
  