Prechádzať zdrojové kódy

fix: 修复非蓝色按钮图标不显示的问题

skyline 1 deň pred
rodič
commit
fbb70dcefe

+ 9 - 7
admin-web-new/src/components/ReIcon/src/hooks.ts

@@ -45,16 +45,18 @@ export function useRenderIcon(icon: any, attrs?: iconType): Component {
       }
     });
   } 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({
       name: "Icon",
       render() {
-        if (!icon) return;
-        const IconifyIcon = icon.includes(":")
-          ? IconifyIconOnline
-          : IconifyIconOffline;
-        return h(IconifyIcon, {
-          icon,
+        if (!normalizedIcon) return;
+        return h(IconifyIconOnline, {
+          icon: normalizedIcon,
           ...attrs
         });
       }