diff options
Diffstat (limited to 'node_modules/react-dom/lib/shouldUpdateReactComponent.js')
-rw-r--r-- | node_modules/react-dom/lib/shouldUpdateReactComponent.js | 41 |
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 |