From 5ede7fb6191c7c587cf7099d044746d1607cd8d5 Mon Sep 17 00:00:00 2001 From: Pete Hunt Date: Mon, 10 Mar 2014 15:27:36 -0700 Subject: [PATCH] ReactDOMComponent optimization Slight optimization to not do unneeded reconciles of DOM components --- src/{core => browser}/__tests__/ReactDOM-test.js | 0 src/browser/ui/ReactDOMComponent.js | 9 +++++++++ .../ui}/__tests__/ReactDOMComponent-test.js | 0 3 files changed, 9 insertions(+) rename src/{core => browser}/__tests__/ReactDOM-test.js (100%) rename src/{core => browser/ui}/__tests__/ReactDOMComponent-test.js (100%) diff --git a/src/core/__tests__/ReactDOM-test.js b/src/browser/__tests__/ReactDOM-test.js similarity index 100% rename from src/core/__tests__/ReactDOM-test.js rename to src/browser/__tests__/ReactDOM-test.js diff --git a/src/browser/ui/ReactDOMComponent.js b/src/browser/ui/ReactDOMComponent.js index cbe512a74a..5b1eface68 100644 --- a/src/browser/ui/ReactDOMComponent.js +++ b/src/browser/ui/ReactDOMComponent.js @@ -206,6 +206,15 @@ ReactDOMComponent.Mixin = { }, receiveComponent: function(nextComponent, transaction) { + if (nextComponent === this) { + // Since props and context are immutable after the component is + // mounted, we can do a cheap identity compare here to determine + // if this is a superfluous reconcile. + + // TODO: compare the descriptor + return; + } + assertValidProps(nextComponent.props); ReactComponent.Mixin.receiveComponent.call( this, diff --git a/src/core/__tests__/ReactDOMComponent-test.js b/src/browser/ui/__tests__/ReactDOMComponent-test.js similarity index 100% rename from src/core/__tests__/ReactDOMComponent-test.js rename to src/browser/ui/__tests__/ReactDOMComponent-test.js