function receiveComponent(internalInstance, nextElement, transaction, context) {
	    var prevElement = internalInstance._currentElement;

	    if (nextElement === prevElement && context === internalInstance._context) {
	      // Since elements are immutable after the owner is rendered,
	      // we can do a cheap identity compare here to determine if this is a
	      // superfluous reconcile. It's possible for state to be mutable but such
	      // change should trigger an update of the owner which would recreate
	      // the element. We explicitly check for the existence of an owner since
	      // it's possible for an element created outside a composite to be
	      // deeply mutated and reused.

	      // TODO: Bailing out early is just a perf optimization right?
	      // TODO: Removing the return statement should affect correctness?
	      return;
	    }

	    if (process.env.NODE_ENV !== 'production') {
	      if (internalInstance._debugID !== 0) {
	        ReactInstrumentation.debugTool.onBeginReconcilerTimer(internalInstance._debugID, 'receiveComponent');
	      }
	    }

	    var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);

	    if (refsChanged) {
	      ReactRef.detachRefs(internalInstance, prevElement);
	    }

	    internalInstance.receiveComponent(nextElement, transaction, context);

	    if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {
	      transaction.getReactMountReady().enqueue(attachRefs, internalInstance);
	    }

	    if (process.env.NODE_ENV !== 'production') {
	      if (internalInstance._debugID !== 0) {
	        ReactInstrumentation.debugTool.onEndReconcilerTimer(internalInstance._debugID, 'receiveComponent');
	        ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);
	      }
	    }
	  }
/**
	   * Update a component using a new element.
	   *
	   * @param {ReactComponent} internalInstance
	   * @param {ReactElement} nextElement
	   * @param {ReactReconcileTransaction} transaction
	   * @param {object} context
	   * @internal
	   */
Update a component using a new element.
Update a component using a new element .
function receiveComponent(internalInstance, nextElement, transaction, context) {
	    var prevElement = internalInstance._currentElement;
	    if (nextElement === prevElement && context === internalInstance._context) {
	      return;
	    }
	    if (process.env.NODE_ENV !== 'production') {
	      if (internalInstance._debugID !== 0) {
	        ReactInstrumentation.debugTool.onBeginReconcilerTimer(internalInstance._debugID, 'receiveComponent');
	      }
	    }
	    var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);
	    if (refsChanged) {
	      ReactRef.detachRefs(internalInstance, prevElement);
	    }
	    internalInstance.receiveComponent(nextElement, transaction, context);
	    if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {
	      transaction.getReactMountReady().enqueue(attachRefs, internalInstance);
	    }
	    if (process.env.NODE_ENV !== 'production') {
	      if (internalInstance._debugID !== 0) {
	        ReactInstrumentation.debugTool.onEndReconcilerTimer(internalInstance._debugID, 'receiveComponent');
	        ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);
	      }
	    }
	  }
function receiveComponent ( internalInstance , nextElement , transaction , context ) { var prevElement = internalInstance . _currentElement ; if ( nextElement === prevElement && context === internalInstance . _context ) { return ; } if ( process . env . NODE_ENV !== 'production' ) { if ( internalInstance . _debugID !== 0 ) { ReactInstrumentation . debugTool . onBeginReconcilerTimer ( internalInstance . _debugID , 'receiveComponent' ) ; } } var refsChanged = ReactRef . shouldUpdateRefs ( prevElement , nextElement ) ; if ( refsChanged ) { ReactRef . detachRefs ( internalInstance , prevElement ) ; } internalInstance . receiveComponent ( nextElement , transaction , context ) ; if ( refsChanged && internalInstance . _currentElement && internalInstance . _currentElement . ref != null ) { transaction . getReactMountReady ( ) . enqueue ( attachRefs , internalInstance ) ; } if ( process . env . NODE_ENV !== 'production' ) { if ( internalInstance . _debugID !== 0 ) { ReactInstrumentation . debugTool . onEndReconcilerTimer ( internalInstance . _debugID , 'receiveComponent' ) ; ReactInstrumentation . debugTool . onUpdateComponent ( internalInstance . _debugID ) ; } } }
Update a component using a new element.
Update a component using a new element .
// Since elements are immutable after the owner is rendered, // we can do a cheap identity compare here to determine if this is a // superfluous reconcile. It's possible for state to be mutable but such // change should trigger an update of the owner which would recreate // the element. We explicitly check for the existence of an owner since // it's possible for an element created outside a composite to be // deeply mutated and reused. // TODO: Bailing out early is just a perf optimization right? // TODO: Removing the return statement should affect correctness?