From 1569dad866cd8221defb869fc2c0657422179595 Mon Sep 17 00:00:00 2001 From: xiyidaiwa Date: Mon, 3 Aug 2026 12:05:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E5=9B=A0=20icon=20=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E8=A2=AB=E5=85=A8=E9=83=A8=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E7=9A=84=E5=9B=9E=E5=BD=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 回顾:上轮健壮性修改中,loadHome 对 homelinks.json 的解析新增了 'if (!url || !icon) continue' 的硬性校验。但远程 homelinks.json 实际 仅提供 name/more/imgUrl/type/url,并不含 icon 字段(首页图片统一由 imgUrl 提供),导致所有链接因缺少 icon 被跳过,首页区域1 变空白。 修正: - App.vue loadHome:移除对 icon 的强制校验,仅校验 url 必需;icon 缺省为空串以兼容类型 - typedefinition HomeLink.icon:由必需 string 改为可选,反映真实数据源契约 vue-tsc --noEmit 通过,已重新打包验证(5.2.1.2-test)。 --- src/App.vue | 5 +++-- src/global/typedefinition.ts | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/App.vue b/src/App.vue index 5220d5e0..3e82745d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1374,10 +1374,11 @@ const loadHome = async () => { const name = (l.Name as string) || (l.name as string) || ""; if (!name) continue; // 跳过空名称,避免空字符串污染 seenNames 与去重逻辑 if (seenNames.has(name)) continue; // 已由更高优先级来源(spark)占据 - // 校验 HomeLink 必需字段,缺失则跳过,避免推入不完整对象导致运行时错误 + // 仅校验 url 必需;远程 homelinks.json 不含 icon 字段(图片由 imgUrl 提供), + // 故 icon 不作为硬性校验,缺省为空串以兼容 HomeLink 类型。 const url = (l.Url as string) || (l.url as string) || ""; + if (!url) continue; const icon = (l.Icon as string) || (l.icon as string) || ""; - if (!url || !icon) continue; seenNames.add(name); homeLinks.value.push({ ...l, diff --git a/src/global/typedefinition.ts b/src/global/typedefinition.ts index 6d87aba1..64ac8a5f 100644 --- a/src/global/typedefinition.ts +++ b/src/global/typedefinition.ts @@ -231,7 +231,8 @@ export interface CategoryInfo { export interface HomeLink { name: string; url: string; - icon: string; + // 数据源(homelinks.json)并不提供 icon 字段,图片统一由 imgUrl 提供,故设为可选 + icon?: string; more?: string; imgUrl?: string; type?: string;