From 012ac24728355eaa1bd234e2e8c0fdfd4af0c96b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=B8jberg?= Date: Wed, 13 Nov 2013 20:54:22 -0500 Subject: [PATCH] ReactTransitions: Don't animate undefined children --- .../transitions/ReactTransitionGroup.js | 5 +++++ .../__tests__/ReactTransitionGroup-test.js | 21 +++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/addons/transitions/ReactTransitionGroup.js b/src/addons/transitions/ReactTransitionGroup.js index 623838c49f..9e2d4911ab 100644 --- a/src/addons/transitions/ReactTransitionGroup.js +++ b/src/addons/transitions/ReactTransitionGroup.js @@ -44,6 +44,11 @@ var ReactTransitionGroupMixin = { 'getTransitionConfig() method.' ); + // don't animate undefined children + if (typeof sourceChildren === 'undefined') { + return; + } + var children = {}; var childMapping = ReactTransitionKeySet.getChildMapping(sourceChildren); var transitionConfig = this.getTransitionConfig(); diff --git a/src/addons/transitions/__tests__/ReactTransitionGroup-test.js b/src/addons/transitions/__tests__/ReactTransitionGroup-test.js index bfddd7be5a..8455d3fba1 100644 --- a/src/addons/transitions/__tests__/ReactTransitionGroup-test.js +++ b/src/addons/transitions/__tests__/ReactTransitionGroup-test.js @@ -26,18 +26,18 @@ var mocks; // Most of the real functionality is covered in other unit tests, this just // makes sure we're wired up correctly. describe('ReactTransitionGroup', function() { + var container; + beforeEach(function() { React = require('React'); ReactTransitionGroup = require('ReactTransitionGroup'); mocks = require('mocks'); + + container = document.createElement('div'); }); it('should warn after time with no transitionend', function() { - var container; - var a; - - container = document.createElement('div'); - a = React.renderComponent( + var a = React.renderComponent( , @@ -65,7 +65,6 @@ describe('ReactTransitionGroup', function() { }); it('should keep both sets of DOM nodes around', function() { - var container = document.createElement('div'); var a = React.renderComponent( @@ -83,4 +82,14 @@ describe('ReactTransitionGroup', function() { expect(a.getDOMNode().childNodes[0].id).toBe('two'); expect(a.getDOMNode().childNodes[1].id).toBe('one'); }); + + describe('with an undefined child', function () { + it('should fail silently', function () { + var a = React.renderComponent( + + , + container + ); + }); + }); });