docs: function(lastProps, transaction, context) {
      var nextProps = this._currentElement.props;
  
      var lastContent =
        CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;
      var nextContent =
        CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;
  
      var lastHtml =
        lastProps.dangerouslySetInnerHTML &&
        lastProps.dangerouslySetInnerHTML.__html;
      var nextHtml =
        nextProps.dangerouslySetInnerHTML &&
        nextProps.dangerouslySetInnerHTML.__html;
  
      // Note the use of `!=` which checks for null or undefined.
      var lastChildren = lastContent != null ? null : lastProps.children;
      var nextChildren = nextContent != null ? null : nextProps.children;
  
      // If we're switching from children to content/html or vice versa, remove
      // the old content
      var lastHasContentOrHtml = lastContent != null || lastHtml != null;
      var nextHasContentOrHtml = nextContent != null || nextHtml != null;
      if (lastChildren != null && nextChildren == null) {
        this.updateChildren(null, transaction, context);
      } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {
        this.updateTextContent('');
      }
  
      if (nextContent != null) {
        if (lastContent !== nextContent) {
          this.updateTextContent('' + nextContent);
        }
      } else if (nextHtml != null) {
        if (lastHtml !== nextHtml) {
          BackendIDOperations.updateInnerHTMLByID(
            this._rootNodeID,
            nextHtml
          );
        }
      } else if (nextChildren != null) {
        this.updateChildren(nextChildren, transaction, context);
      }
    }