function mountComponent(transaction, nativeParent, nativeContainerInfo, context) {
	    this._context = context;
	    this._mountOrder = nextMountID++;
	    this._nativeParent = nativeParent;
	    this._nativeContainerInfo = nativeContainerInfo;

	    var publicProps = this._processProps(this._currentElement.props);
	    var publicContext = this._processContext(context);

	    var Component = this._currentElement.type;

	    // Initialize the public class
	    var inst = this._constructComponent(publicProps, publicContext);
	    var renderedElement;

	    // Support functional components
	    if (!shouldConstruct(Component) && (inst == null || inst.render == null)) {
	      renderedElement = inst;
	      warnIfInvalidElement(Component, renderedElement);
	      !(inst === null || inst === false || ReactElement.isValidElement(inst)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : invariant(false) : void 0;
	      inst = new StatelessComponent(Component);
	    }

	    if (process.env.NODE_ENV !== 'production') {
	      // This will throw later in _renderValidatedComponent, but add an early
	      // warning now to help debugging
	      if (inst.render == null) {
	        process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;
	      }

	      var propsMutated = inst.props !== publicProps;
	      var componentName = Component.displayName || Component.name || 'Component';

	      process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\'s constructor was passed.', componentName, componentName) : void 0;
	    }

	    // These should be set up in the constructor, but as a convenience for
	    // simpler class abstractions, we set them up after the fact.
	    inst.props = publicProps;
	    inst.context = publicContext;
	    inst.refs = emptyObject;
	    inst.updater = ReactUpdateQueue;

	    this._instance = inst;

	    // Store a reference from the instance back to the internal representation
	    ReactInstanceMap.set(inst, this);

	    if (process.env.NODE_ENV !== 'production') {
	      // Since plain JS classes are defined without any special initialization
	      // logic, we can not catch common errors early. Therefore, we have to
	      // catch them here, at initialization time, instead.
	      process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;
	      process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;
	      process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;
	      process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;
	      process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;
	      process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;
	      process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;
	    }

	    var initialState = inst.state;
	    if (initialState === undefined) {
	      inst.state = initialState = null;
	    }
	    !((typeof initialState === 'undefined' ? 'undefined' : _typeof(initialState)) === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : invariant(false) : void 0;

	    this._pendingStateQueue = null;
	    this._pendingReplaceState = false;
	    this._pendingForceUpdate = false;

	    var markup;
	    if (inst.unstable_handleError) {
	      markup = this.performInitialMountWithErrorHandling(renderedElement, nativeParent, nativeContainerInfo, transaction, context);
	    } else {
	      markup = this.performInitialMount(renderedElement, nativeParent, nativeContainerInfo, transaction, context);
	    }

	    if (inst.componentDidMount) {
	      if (process.env.NODE_ENV !== 'production') {
	        transaction.getReactMountReady().enqueue(invokeComponentDidMountWithTimer, this);
	      } else {
	        transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);
	      }
	    }

	    return markup;
	  }
/**
	   * Initializes the component, renders markup, and registers event listeners.
	   *
	   * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
	   * @param {?object} nativeParent
	   * @param {?object} nativeContainerInfo
	   * @param {?object} context
	   * @return {?string} Rendered markup to be inserted into the DOM.
	   * @final
	   * @internal
	   */
Initializes the component, renders markup, and registers event listeners.
Initializes the component renders markup and registers event listeners .
function mountComponent(transaction, nativeParent, nativeContainerInfo, context) {
	    this._context = context;
	    this._mountOrder = nextMountID++;
	    this._nativeParent = nativeParent;
	    this._nativeContainerInfo = nativeContainerInfo;
	    var publicProps = this._processProps(this._currentElement.props);
	    var publicContext = this._processContext(context);
	    var Component = this._currentElement.type;
	    var inst = this._constructComponent(publicProps, publicContext);
	    var renderedElement;
	    if (!shouldConstruct(Component) && (inst == null || inst.render == null)) {
	      renderedElement = inst;
	      warnIfInvalidElement(Component, renderedElement);
	      !(inst === null || inst === false || ReactElement.isValidElement(inst)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : invariant(false) : void 0;
	      inst = new StatelessComponent(Component);
	    }
	    if (process.env.NODE_ENV !== 'production') {
	      if (inst.render == null) {
	        process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;
	      }
	      var propsMutated = inst.props !== publicProps;
	      var componentName = Component.displayName || Component.name || 'Component';
	      process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\'s constructor was passed.', componentName, componentName) : void 0;
	    }
	    inst.props = publicProps;
	    inst.context = publicContext;
	    inst.refs = emptyObject;
	    inst.updater = ReactUpdateQueue;
	    this._instance = inst;
	    ReactInstanceMap.set(inst, this);
	    if (process.env.NODE_ENV !== 'production') {
	      process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;
	      process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;
	      process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;
	      process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;
	      process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;
	      process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;
	      process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;
	    }
	    var initialState = inst.state;
	    if (initialState === undefined) {
	      inst.state = initialState = null;
	    }
	    !((typeof initialState === 'undefined' ? 'undefined' : _typeof(initialState)) === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : invariant(false) : void 0;
	    this._pendingStateQueue = null;
	    this._pendingReplaceState = false;
	    this._pendingForceUpdate = false;
	    var markup;
	    if (inst.unstable_handleError) {
	      markup = this.performInitialMountWithErrorHandling(renderedElement, nativeParent, nativeContainerInfo, transaction, context);
	    } else {
	      markup = this.performInitialMount(renderedElement, nativeParent, nativeContainerInfo, transaction, context);
	    }
	    if (inst.componentDidMount) {
	      if (process.env.NODE_ENV !== 'production') {
	        transaction.getReactMountReady().enqueue(invokeComponentDidMountWithTimer, this);
	      } else {
	        transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);
	      }
	    }
	    return markup;
	  }
function mountComponent ( transaction , nativeParent , nativeContainerInfo , context ) { this . _context = context ; this . _mountOrder = nextMountID ++ ; this . _nativeParent = nativeParent ; this . _nativeContainerInfo = nativeContainerInfo ; var publicProps = this . _processProps ( this . _currentElement . props ) ; var publicContext = this . _processContext ( context ) ; var Component = this . _currentElement . type ; var inst = this . _constructComponent ( publicProps , publicContext ) ; var renderedElement ; if ( ! shouldConstruct ( Component ) && ( inst == null || inst . render == null ) ) { renderedElement = inst ; warnIfInvalidElement ( Component , renderedElement ) ; ! ( inst === null || inst === false || ReactElement . isValidElement ( inst ) ) ? process . env . NODE_ENV !== 'production' ? invariant ( false , '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.' , Component . displayName || Component . name || 'Component' ) : invariant ( false ) : void 0 ; inst = new StatelessComponent ( Component ) ; } if ( process . env . NODE_ENV !== 'production' ) { if ( inst . render == null ) { process . env . NODE_ENV !== 'production' ? warning ( false , '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.' , Component . displayName || Component . name || 'Component' ) : void 0 ; } var propsMutated = inst . props !== publicProps ; var componentName = Component . displayName || Component . name || 'Component' ; process . env . NODE_ENV !== 'production' ? warning ( inst . props === undefined || ! propsMutated , '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\'s constructor was passed.' , componentName , componentName ) : void 0 ; } inst . props = publicProps ; inst . context = publicContext ; inst . refs = emptyObject ; inst . updater = ReactUpdateQueue ; this . _instance = inst ; ReactInstanceMap . set ( inst , this ) ; if ( process . env . NODE_ENV !== 'production' ) { process . env . NODE_ENV !== 'production' ? warning ( ! inst . getInitialState || inst . getInitialState . isReactClassApproved , 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?' , this . getName ( ) || 'a component' ) : void 0 ; process . env . NODE_ENV !== 'production' ? warning ( ! inst . getDefaultProps || inst . getDefaultProps . isReactClassApproved , 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.' , this . getName ( ) || 'a component' ) : void 0 ; process . env . NODE_ENV !== 'production' ? warning ( ! inst . propTypes , 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.' , this . getName ( ) || 'a component' ) : void 0 ; process . env . NODE_ENV !== 'production' ? warning ( ! inst . contextTypes , 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.' , this . getName ( ) || 'a component' ) : void 0 ; process . env . NODE_ENV !== 'production' ? warning ( typeof inst . componentShouldUpdate !== 'function' , '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.' , this . getName ( ) || 'A component' ) : void 0 ; process . env . NODE_ENV !== 'production' ? warning ( typeof inst . componentDidUnmount !== 'function' , '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?' , this . getName ( ) || 'A component' ) : void 0 ; process . env . NODE_ENV !== 'production' ? warning ( typeof inst . componentWillRecieveProps !== 'function' , '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?' , this . getName ( ) || 'A component' ) : void 0 ; } var initialState = inst . state ; if ( initialState === undefined ) { inst . state = initialState = null ; } ! ( ( typeof initialState === 'undefined' ? 'undefined' : _typeof ( initialState ) ) === 'object' && ! Array . isArray ( initialState ) ) ? process . env . NODE_ENV !== 'production' ? invariant ( false , '%s.state: must be set to an object or null' , this . getName ( ) || 'ReactCompositeComponent' ) : invariant ( false ) : void 0 ; this . _pendingStateQueue = null ; this . _pendingReplaceState = false ; this . _pendingForceUpdate = false ; var markup ; if ( inst . unstable_handleError ) { markup = this . performInitialMountWithErrorHandling ( renderedElement , nativeParent , nativeContainerInfo , transaction , context ) ; } else { markup = this . performInitialMount ( renderedElement , nativeParent , nativeContainerInfo , transaction , context ) ; } if ( inst . componentDidMount ) { if ( process . env . NODE_ENV !== 'production' ) { transaction . getReactMountReady ( ) . enqueue ( invokeComponentDidMountWithTimer , this ) ; } else { transaction . getReactMountReady ( ) . enqueue ( inst . componentDidMount , inst ) ; } } return markup ; }
Initializes the component, renders markup, and registers event listeners.
Initializes the component renders markup and registers event listeners .
// Initialize the public class // Support functional components // This will throw later in _renderValidatedComponent, but add an early // warning now to help debugging // These should be set up in the constructor, but as a convenience for // simpler class abstractions, we set them up after the fact. // Store a reference from the instance back to the internal representation // Since plain JS classes are defined without any special initialization // logic, we can not catch common errors early. Therefore, we have to // catch them here, at initialization time, instead.