diff --git a/perf/lib/BrowserPerfRunnerApp.react.js b/perf/lib/BrowserPerfRunnerApp.react.js index 5b34f3bcaaec5..9d25e700b8843 100644 --- a/perf/lib/BrowserPerfRunnerApp.react.js +++ b/perf/lib/BrowserPerfRunnerApp.react.js @@ -197,8 +197,10 @@ var GridViewTable = React.createClass({ render: function(){ return React.DOM.table(null, - this._renderRow(null, 0), - this.props.rows.map(this._renderRow, this) + React.DOM.tbody(null, + this._renderRow(null, 0), + this.props.rows.map(this._renderRow, this) + ) ); } diff --git a/perf/lib/perf-test-runner.browser.js b/perf/lib/perf-test-runner.browser.js index 26e059f8c38c7..0579c2e7fe3a3 100644 --- a/perf/lib/perf-test-runner.browser.js +++ b/perf/lib/perf-test-runner.browser.js @@ -195,10 +195,14 @@ perfRunner.ViewObject = function(props){ if (typeof value != 'object') return React.DOM.span(props, [JSON.stringify(value), " ", typeof value]); - return React.DOM.table(props, Object.keys(value).map(function(key){ - return React.DOM.tr(null, - React.DOM.th(null, key), - React.DOM.td(null, perfRunner.ViewObject({key:key, value:value[key]})) - ); - })); + return React.DOM.table(props, + React.DOM.tbody(null, + Object.keys(value).map(function(key){ + return React.DOM.tr(null, + React.DOM.th(null, key), + React.DOM.td(null, perfRunner.ViewObject({key:key, value:value[key]})) + ); + }) + ) + ); } diff --git a/src/browser/ui/ReactMount.js b/src/browser/ui/ReactMount.js index 65eb9902cc901..891bcdca9191f 100644 --- a/src/browser/ui/ReactMount.js +++ b/src/browser/ui/ReactMount.js @@ -610,29 +610,35 @@ var ReactMount = { while (child) { var childID = ReactMount.getID(child); - if (childID) { - // Even if we find the node we're looking for, we finish looping - // through its siblings to ensure they're cached so that we don't have - // to revisit this node again. Otherwise, we make n^2 calls to getID - // when visiting the many children of a single node in order. - - if (targetID === childID) { - targetChild = child; - } else if (ReactInstanceHandles.isAncestorIDOf(childID, targetID)) { - // If we find a child whose ID is an ancestor of the given ID, - // then we can be sure that we only want to search the subtree - // rooted at this child, so we can throw out the rest of the - // search state. - firstChildren.length = childIndex = 0; - firstChildren.push(child.firstChild); - } - } else { - // If this child had no ID, then there's a chance that it was - // injected automatically by the browser, as when a `