diff --git a/src/addons/transitions/ReactTransitionGroup.js b/src/addons/transitions/ReactTransitionGroup.js index a29dc3d2c2..ed56473146 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'); + }); + });