UNPKG

react-addons

Version:

Simple packaging of react addons to avoid fiddly 'react/addons' npm module.

59 lines (55 loc) 2 kB
/** * Copyright 2013-2014 Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * @providesModule shouldUpdateReactComponent * @typechecks static-only */ "use strict"; /** * Given a `prevComponent` and `nextComponent`, determines if `prevComponent` * should be updated as opposed to being destroyed or replaced. * * @param {?object} prevComponent * @param {?object} nextComponent * @return {boolean} True if `prevComponent` should be updated. * @protected */ function shouldUpdateReactComponent(prevComponent, nextComponent) { // TODO: Remove warning after a release. if (prevComponent && nextComponent && prevComponent.constructor === nextComponent.constructor && ( (prevComponent.props && prevComponent.props.key) === (nextComponent.props && nextComponent.props.key) )) { if (prevComponent._owner === nextComponent._owner) { return true; } else { if ("production" !== process.env.NODE_ENV) { if (prevComponent.state) { console.warn( 'A recent change to React has been found to impact your code. ' + 'A mounted component will now be unmounted and replaced by a ' + 'component (of the same class) if their owners are different. ' + 'Previously, ownership was not considered when updating.', prevComponent, nextComponent ); } } } } return false; } module.exports = shouldUpdateReactComponent;