|
@@ -45,16 +45,18 @@ export function useRenderIcon(icon: any, attrs?: iconType): Component {
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
} else {
|
|
} else {
|
|
|
- // 通过是否存在 : 符号来判断是在线还是本地图标,存在即是在线图标,反之
|
|
|
|
|
|
|
+ // 将 prefix/name 格式(如 ri/search-line)转换为 prefix:name 格式(如 ri:search-line)
|
|
|
|
|
+ // 统一使用 IconifyIconOnline 从 API 加载图标,避免离线模式下未预加载的图标无法渲染
|
|
|
|
|
+ const normalizedIcon =
|
|
|
|
|
+ typeof icon === "string" && !icon.includes(":")
|
|
|
|
|
+ ? icon.replace("/", ":")
|
|
|
|
|
+ : icon;
|
|
|
return defineComponent({
|
|
return defineComponent({
|
|
|
name: "Icon",
|
|
name: "Icon",
|
|
|
render() {
|
|
render() {
|
|
|
- if (!icon) return;
|
|
|
|
|
- const IconifyIcon = icon.includes(":")
|
|
|
|
|
- ? IconifyIconOnline
|
|
|
|
|
- : IconifyIconOffline;
|
|
|
|
|
- return h(IconifyIcon, {
|
|
|
|
|
- icon,
|
|
|
|
|
|
|
+ if (!normalizedIcon) return;
|
|
|
|
|
+ return h(IconifyIconOnline, {
|
|
|
|
|
+ icon: normalizedIcon,
|
|
|
...attrs
|
|
...attrs
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|