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
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;
|