aboutsummaryrefslogtreecommitdiff
path: root/node_modules/react-dom/lib/shouldUpdateReactComponent.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/react-dom/lib/shouldUpdateReactComponent.js')
-rw-r--r--node_modules/react-dom/lib/shouldUpdateReactComponent.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/node_modules/react-dom/lib/shouldUpdateReactComponent.js b/node_modules/react-dom/lib/shouldUpdateReactComponent.js
new file mode 100644
index 000000000..d39b948be
--- /dev/null
+++ b/node_modules/react-dom/lib/shouldUpdateReactComponent.js
@@ -0,0 +1,41 @@
+/**
+ * Copyright 2013-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ */
+
+'use strict';
+
+/**
+ * Given a `prevElement` and `nextElement`, determines if the existing
+ * instance should be updated as opposed to being destroyed or replaced by a new
+ * instance. Both arguments are elements. This ensures that this logic can
+ * operate on stateless trees without any backing instance.
+ *
+ * @param {?object} prevElement
+ * @param {?object} nextElement
+ * @return {boolean} True if the existing instance should be updated.
+ * @protected
+ */
+
+function shouldUpdateReactComponent(prevElement, nextElement) {
+ var prevEmpty = prevElement === null || prevElement === false;
+ var nextEmpty = nextElement === null || nextElement === false;
+ if (prevEmpty || nextEmpty) {
+ return prevEmpty === nextEmpty;
+ }
+
+ var prevType = typeof prevElement;
+ var nextType = typeof nextElement;
+ if (prevType === 'string' || prevType === 'number') {
+ return nextType === 'string' || nextType === 'number';
+ } else {
+ return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;
+ }
+}
+
+module.exports = shouldUpdateReactComponent; \ No newline at end of file