From a9c8de252d5464037090e155c431abfe9f671531 Mon Sep 17 00:00:00 2001 From: Svyatoslav Date: Mon, 28 Nov 2016 14:10:28 +0200 Subject: [PATCH 01/43] feat: render components that return null for various React versions (#195) --- src/extendReactClass.js | 7 ++++--- src/renderNothing.js | 7 +++++++ src/wrapStatelessFunction.js | 3 ++- tests/extendReactClass.js | 4 ++-- tests/renderNothing.js | 16 ++++++++++++++++ tests/wrapStatelessFunction.js | 4 ++-- 6 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 src/renderNothing.js create mode 100644 tests/renderNothing.js diff --git a/src/extendReactClass.js b/src/extendReactClass.js index 0588005..933aa54 100644 --- a/src/extendReactClass.js +++ b/src/extendReactClass.js @@ -1,9 +1,10 @@ /* eslint-disable react/prop-types */ -import React from 'react'; import _ from 'lodash'; +import React from 'react'; import hoistNonReactStatics from 'hoist-non-react-statics'; import linkClass from './linkClass'; +import renderNothing from './renderNothing'; /** * @param {ReactClass} Component @@ -49,9 +50,9 @@ export default (Component: Object, defaultStyles: Object, options: Object) => { return linkClass(renderResult, styles, options); } - return React.createElement('noscript'); + return renderNothing(React.version); } - }; + }; return hoistNonReactStatics(WrappedComponent, Component); }; diff --git a/src/renderNothing.js b/src/renderNothing.js new file mode 100644 index 0000000..93675fe --- /dev/null +++ b/src/renderNothing.js @@ -0,0 +1,7 @@ +import React from 'react'; + +export default function (version) { + const major = version.split('.')[0]; + + return parseInt(major, 10) < 15 ? React.createElement('noscript') : null; +} diff --git a/src/wrapStatelessFunction.js b/src/wrapStatelessFunction.js index 3c99401..e1ae8e2 100644 --- a/src/wrapStatelessFunction.js +++ b/src/wrapStatelessFunction.js @@ -3,6 +3,7 @@ import _ from 'lodash'; import React from 'react'; import linkClass from './linkClass'; +import renderNothing from './renderNothing'; /** * @see https://facebook.github.io/react/blog/2015/09/10/react-v0.14-rc1.html#stateless-function-components @@ -39,7 +40,7 @@ export default (Component: Function, defaultStyles: Object, options: Object): Fu return linkClass(renderResult, styles, options); } - return React.createElement('noscript'); + return renderNothing(React.version); }; _.assign(WrappedComponent, Component); diff --git a/tests/extendReactClass.js b/tests/extendReactClass.js index 1113506..e4ea06a 100644 --- a/tests/extendReactClass.js +++ b/tests/extendReactClass.js @@ -128,7 +128,7 @@ describe('extendReactClass', () => { }); }); context('rendering Component that returns null', () => { - it('generates