@bigfishtv/cockpit
Version:
38 lines (32 loc) • 1.03 kB
JavaScript
import React from 'react'
/**
* 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}
*/
export function renderComponent(Component, props) {
if (!Component) return null
// intentional... we don't spread props over react element
if (React.isValidElement(Component)) return Component
if (Component.prototype && isStatelessFunctionalComponent(Component)) {
return Component(props)
}
return <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}
*/
export function isStatelessFunctionalComponent(Component) {
return Component.prototype.setState === undefined
}