docs: function(transaction, context) {
      var prevComponentInstance = this._renderedComponent;
      var prevRenderedElement = prevComponentInstance._currentElement;
      var childContext = this._getValidatedChildContext();
      var nextRenderedElement = this._renderValidatedComponent(childContext);
      if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {
        ReactReconciler.receiveComponent(
          prevComponentInstance,
          nextRenderedElement,
          transaction,
          this._mergeChildContext(context, childContext)
        );
      } else {
        // These two IDs are actually the same! But nothing should rely on that.
        var thisID = this._rootNodeID;
        var prevComponentID = prevComponentInstance._rootNodeID;
        ReactReconciler.unmountComponent(prevComponentInstance);
  
        this._renderedComponent = this._instantiateReactComponent(
          nextRenderedElement,
          this._currentElement.type
        );
        var nextMarkup = ReactReconciler.mountComponent(
          this._renderedComponent,
          thisID,
          transaction,
          this._mergeChildContext(context, childContext)
        );
        this._replaceNodeWithMarkupByID(prevComponentID, nextMarkup);
      }
    }