@bigfishtv/cockpit
Version:
47 lines (38 loc) • 1.37 kB
JavaScript
;
exports.__esModule = true;
exports.renderComponent = renderComponent;
exports.isStatelessFunctionalComponent = isStatelessFunctionalComponent;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Helper method to render a component with props. Will accept
* a regular React class, a stateless functional component, or
* a React element.
*
* Note: if element is passed, props will be ignored.
*
* @param {Component|Element|Function} Component to render or element to display
* @param {object} props
* @return {Element|null}
*/
function renderComponent(Component, props) {
if (!Component) return null;
// intentional... we don't spread props over react element
if (_react2.default.isValidElement(Component)) return Component;
if (Component.prototype && isStatelessFunctionalComponent(Component)) {
return Component(props);
}
return _react2.default.createElement(Component, props);
}
/**
* Returns true if we think Component is a stateless function.
*
* Note: Naive implementation, looks for setState method on prototype.
*
* @param {Function} Component
* @return {Boolean}
*/
function isStatelessFunctionalComponent(Component) {
return Component.prototype.setState === undefined;
}