From 5c9224145ee0fe2de65e98d2540ccc0f004b1b00 Mon Sep 17 00:00:00 2001 From: Ben Alpert Date: Wed, 7 May 2014 09:54:23 -0300 Subject: [PATCH] ReactTransitionGroup: Fix moving from falsey child See http://stackoverflow.com/q/23510413/49485. Test Plan: grunt fasttest --- src/addons/transitions/ReactTransitionGroup.js | 6 ++++-- .../__tests__/ReactCSSTransitionGroup-test.js | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/addons/transitions/ReactTransitionGroup.js b/src/addons/transitions/ReactTransitionGroup.js index f77f63a1cd..7614bb7605 100644 --- a/src/addons/transitions/ReactTransitionGroup.js +++ b/src/addons/transitions/ReactTransitionGroup.js @@ -62,14 +62,16 @@ var ReactTransitionGroup = React.createClass({ for (key in nextChildMapping) { var hasPrev = prevChildMapping && prevChildMapping.hasOwnProperty(key); - if (!hasPrev && !this.currentlyTransitioningKeys[key]) { + if (nextChildMapping[key] && !hasPrev && + !this.currentlyTransitioningKeys[key]) { this.keysToEnter.push(key); } } for (key in prevChildMapping) { var hasNext = nextChildMapping && nextChildMapping.hasOwnProperty(key); - if (!hasNext && !this.currentlyTransitioningKeys[key]) { + if (prevChildMapping[key] && !hasNext && + !this.currentlyTransitioningKeys[key]) { this.keysToLeave.push(key); } } diff --git a/src/addons/transitions/__tests__/ReactCSSTransitionGroup-test.js b/src/addons/transitions/__tests__/ReactCSSTransitionGroup-test.js index ef06239501..1508927bcb 100644 --- a/src/addons/transitions/__tests__/ReactCSSTransitionGroup-test.js +++ b/src/addons/transitions/__tests__/ReactCSSTransitionGroup-test.js @@ -163,4 +163,22 @@ describe('ReactCSSTransitionGroup', function() { expect(a.getDOMNode().childNodes[0].id).toBe('one'); }); + it('should transition from false to one', function() { + var a = React.renderComponent( + + {false} + , + container + ); + expect(a.getDOMNode().childNodes.length).toBe(0); + React.renderComponent( + + + , + container + ); + expect(a.getDOMNode().childNodes.length).toBe(1); + expect(a.getDOMNode().childNodes[0].id).toBe('one'); + }); + });