You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

28 lines
792 B

import React from 'react';
const renderNode = (Component, content, defaultProps = {}) => {
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') {
if (content.length === 0) {
return null;
}
return <Component {...defaultProps}>{content}</Component>;
}
if (typeof content === 'number') {
return <Component {...defaultProps}>{content}</Component>;
}
return <Component {...defaultProps} {...content}/>;
};
export default renderNode;