Transitions: Handle undefined input to mergeKeySet
Gracefully handle undefined input to mergeKeySet.
Simon Højberg committed
Nov 13, 2013 at 23:02 UTC
5b1e4c0324c984be96d4792b1ed13d457862a5bd
3 files changed
+30
-5
src/addons/transitions/ReactTransitionGroup.js
+1
-5
@@ -44,13 +44,9 @@ var ReactTransitionGroupMixin = {
44
'getTransitionConfig() method.'
45
);
46
47
- // don't animate undefined children
48
- if (typeof sourceChildren === 'undefined') {
49
- return;
50
- }
51
-
47
var children = {};
48
var childMapping = ReactTransitionKeySet.getChildMapping(sourceChildren);
49
+
50
var transitionConfig = this.getTransitionConfig();
51
var currentKeys = ReactTransitionKeySet.mergeKeySets(
52
this._transitionGroupCurrentKeys,
src/addons/transitions/ReactTransitionKeySet.js
+3
@@ -68,6 +68,9 @@ var ReactTransitionKeySet = {
68
* in `next` in a reasonable order.
69
*/
70
mergeKeySets: function(prev, next) {
71
+ prev = prev || {};
72
+ next = next || {};
73
+
74
var keySet = {};
75
var prevKeys = Object.keys(prev).concat([MERGE_KEY_SETS_TAIL_SENTINEL]);
76
var nextKeys = Object.keys(next).concat([MERGE_KEY_SETS_TAIL_SENTINEL]);
src/addons/transitions/__tests__/ReactTransitionKeySet-test.js
+26
@@ -127,4 +127,30 @@ describe('ReactTransitionKeySet', function() {
127
five: true
128
});
129
});
130
+
131
+ it('should support mergeKeySets with undefined input', function () {
132
+ var prev = {
133
+ one: true,
134
+ two: true
135
+ };
136
+
137
+ var next = undefined;
138
+
139
+ expect(ReactTransitionKeySet.mergeKeySets(prev, next)).toEqual({
140
+ one: true,
141
+ two: true
142
+ });
143
+
144
+ prev = undefined;
145
+
146
+ next = {
147
+ three: true,
148
+ four: true
149
+ };
150
+
151
+ expect(ReactTransitionKeySet.mergeKeySets(prev, next)).toEqual({
152
+ three: true,
153
+ four: true
154
+ });
155
+ });
156
});