diff --git a/src/addons/ReactFragment.js b/src/addons/ReactFragment.js index e6afbd75f4..f811ee568a 100644 --- a/src/addons/ReactFragment.js +++ b/src/addons/ReactFragment.js @@ -96,6 +96,14 @@ var ReactFragment = { // of its properties. create: function(object) { if (__DEV__) { + if (typeof object !== 'object' || !object) { + warning( + false, + 'React.addons.createFragment only accepts a single object. Not %s', + object + ); + return object; + } if (canWarnForReactFragment) { var proxy = {}; Object.defineProperty(proxy, fragmentKey, { diff --git a/src/addons/__tests__/ReactFragment-test.js b/src/addons/__tests__/ReactFragment-test.js index d7025f8029..ebd918b3af 100644 --- a/src/addons/__tests__/ReactFragment-test.js +++ b/src/addons/__tests__/ReactFragment-test.js @@ -73,4 +73,13 @@ describe('ReactFragment', function() { ); }); + it('should warn if accessing any property on a fragment', function() { + spyOn(console, 'warn'); + ReactFragment.create(null); + expect(console.warn.calls.length).toBe(1); + expect(console.warn.calls[0].args[0]).toContain( + 'React.addons.createFragment only accepts a single object. Not null' + ); + }); + });