renderNode.tsx
664 Bytes
import React, { ComponentType, ReactNode } from 'react';
const renderNode = (
Component: ComponentType,
content: ReactNode,
defaultProps: any
) => {
if (content == null || content === false) {
return null;
}
if (React.isValidElement(content)) {
return content;
}
if (typeof content === 'function') {
return content();
}
// Just in case
if (content === true) {
return <Component {...defaultProps} />;
}
if (typeof content === 'string' || typeof content === 'number') {
return <Component {...defaultProps}>{content}</Component>;
}
return <Component {...defaultProps} {...content} />;
};
export default renderNode;