UNPKG

@bigfishtv/cockpit

Version:

47 lines (38 loc) 1.37 kB
'use strict'; 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; }