fix: 兼容 icon 为 esmodule 功能

This commit is contained in:
力皓 2021-06-17 11:14:36 +08:00
parent 2ba28f928a
commit 8319b13051
2 changed files with 9 additions and 1 deletions

View File

@ -2,6 +2,7 @@ import { isValidElement, ReactNode, createElement, cloneElement } from 'react';
import { Icon } from '@alifd/next';
import { IconType } from '@ali/lowcode-types';
import { isReactComponent } from './is-react';
import { isESModule } from './is-es-module';
const URL_RE = /^(https?:)\/\//i;
@ -9,6 +10,9 @@ export function createIcon(icon?: IconType | null, props?: Record<string, unknow
if (!icon) {
return null;
}
if (isESModule(icon)) {
icon = icon.default;
}
if (typeof icon === 'string') {
if (URL_RE.test(icon)) {
return <img src={icon} {...props} />;

View File

@ -1,3 +1,7 @@
export function isESModule(obj: any): obj is { [key: string]: any } {
export type ESModule = {
__esModule: true;
default: any;
};
export function isESModule(obj: any): obj is ESModule {
return obj && obj.__esModule;
}