|
|
@@ -6,6 +6,20 @@ import styles from './index.less';
|
|
|
const { Sider } = Layout;
|
|
|
const { SubMenu } = Menu;
|
|
|
|
|
|
+// Allow menu.js config icon as string or ReactNode
|
|
|
+// icon: 'setting',
|
|
|
+// icon: 'http://demo.com/icon.png',
|
|
|
+// icon: <Icon type="setting" />,
|
|
|
+const getIcon = (icon) => {
|
|
|
+ if (typeof icon === 'string' && icon.indexOf('http') === 0) {
|
|
|
+ return <img src={icon} alt="icon" className={styles.icon} />;
|
|
|
+ }
|
|
|
+ if (typeof icon === 'string') {
|
|
|
+ return <Icon type={icon} />;
|
|
|
+ }
|
|
|
+ return icon;
|
|
|
+};
|
|
|
+
|
|
|
export default class SiderMenu extends PureComponent {
|
|
|
constructor(props) {
|
|
|
super(props);
|
|
|
@@ -84,7 +98,7 @@ export default class SiderMenu extends PureComponent {
|
|
|
title={
|
|
|
item.icon ? (
|
|
|
<span>
|
|
|
- <Icon type={item.icon} />
|
|
|
+ {getIcon(item.icon)}
|
|
|
<span>{item.name}</span>
|
|
|
</span>
|
|
|
) : item.name
|
|
|
@@ -95,7 +109,7 @@ export default class SiderMenu extends PureComponent {
|
|
|
</SubMenu>
|
|
|
);
|
|
|
}
|
|
|
- const icon = item.icon && <Icon type={item.icon} />;
|
|
|
+ const icon = getIcon(item.icon);
|
|
|
return item.hideInMenu ? null :
|
|
|
(
|
|
|
<Menu.Item key={item.key || item.path}>
|