HarmonyOS应用实战-启示散页-66-空题库别只禁用按钮:给当前选择和抽取入口一条恢复链
HarmonyOS 应用实战 66空题库别只禁用按钮给当前选择和抽取入口一条恢复链“获取答案”按钮变灰只能阻止当前点击不能解释当前题库为什么不可用。空题库、被删除的题库、答案全被清空的题库都需要一条恢复链告诉用户当前状态、给出可操作入口并保证抽取服务不会拿空数组随机。本文解决四个问题区分无题库、空题库、当前题库失效在服务层返回可恢复状态页面展示恢复入口而不只禁用按钮验证首页、选择器、抽取页三处一致空题库不是一个按钮状态按钮禁用只是 UI 结果背后可能是三类业务状态没有任何题库、当前题库不存在、当前题库存在但没有答案。它们对应的恢复动作不同。| 状态 | 用户应看到什么 | |---|---| | noDeck | 创建或导入题库入口 | | missingCurrent | 回退默认题库或重新选择 | | emptyAnswers | 去编辑题库添加答案 |空题库不是一个 UI 状态而是一组需要恢复的业务状态。没有题库、当前题库失效、题库存在但答案为空分别需要不同入口。HomeReadyState 描述恢复动作首页快照应明确是否可抽取以及不可抽取时该给哪个恢复动作。typeRecoveryActioncreateDeck|selectDeck|editCurrentDeck|fallbackDefault;interfaceHomeReadyState{drawable:boolean;currentDeckId:string;reason?:string;recoveryAction?:RecoveryAction;}HomeReadyState把是否可抽取和恢复动作放在同一个快照里页面就不用在按钮、空态和选择器之间各自判断。HomeService 负责判断题库状态页面不遍历 decks 判断原因。服务读取当前 id 和题库列表后返回可展示状态。classHomeReadinessService{asyncload():PromiseHomeReadyState{constdecksawaitDeckRepository.loadAllDecks();if(decks.length0){return{drawable:false,currentDeckId:,reason:还没有题库,recoveryAction:createDeck};}constcurrentIdawaitAppPreferencesRepository.loadCurrentDeckId();constcurrentdecks.find((deck)deck.idcurrentId);if(!current){return{drawable:false,currentDeckId:DEFAULT_DECK_ID,reason:当前题库已失效,recoveryAction:fallbackDefault};}returncurrent.answers.length0?{drawable:true,currentDeckId:current.id}:{drawable:false,currentDeckId:current.id,reason:当前题库没有答案,recoveryAction:editCurrentDeck};}}首页服务负责读题库、校验当前选择并给出原因。这个判断放在页面里会让快捷入口和抽取页绕过同一条规则。抽取服务仍然要做最后防线首页显示可抽取不代表点击瞬间仍可抽取。AnswerPickService 必须拒绝空候选集。classAnswerPickService{pick(deck:Deck):Answer{if(deck.answers.length0){thrownewError(题库没有可抽取答案);}returndeck.answers[Math.floor(Math.random()*deck.answers.length)];}}抽取服务必须做最后防线。状态从首页展示到用户点击之间可能变化空数组随机不能靠按钮禁用来避免。页面恢复入口要指向具体动作不要只显示“暂无数据”。用户需要知道下一步是创建、选择、编辑还是回退。Componentstruct HomeRecoveryPanel{Propstate:HomeReadyState;privateprimaryAction():void{if(this.state.recoveryActioneditCurrentDeck){NavigationService.openDeckEdit(this.state.currentDeckId);}elseif(this.state.recoveryActionfallbackDefault){DeckService.setCurrent(DEFAULT_DECK_ID);}}}恢复入口要具体到动作创建、选择、编辑、回退。只显示“暂无数据”会让用户知道出错却不知道怎么恢复。空题库回归要覆盖入口差异从首页按钮、历史再次提问、快捷入口进入抽取都要得到同一个不可抽取原因。验证删除全部题库保留一个空题库删除当前题库从首页和快捷入口分别抽取确认都不会进入随机逻辑。入口差异是空题库回归的重点。首页按钮、历史再次提问、快捷推荐进入抽取都应该得到同一个不可抽取原因。空题库排查表如果只是按钮灰了说明恢复链还不完整。现象缺少什么修复只有按钮变灰没有 reason/action返回 HomeReadyState快捷入口仍崩溃只在首页判断抽取服务最后校验用户不知怎么办空态无主动作指向创建/编辑/回退排查时不要先调按钮样式。先确认服务返回的reason和recoveryAction是否完整再看页面是否正确消费。恢复链要写到用户能继续操作空题库文章要避免停在“禁用按钮”。真正的恢复链至少有状态解释、主动作和兜底动作。比如没有题库时主动作是创建或导入当前题库为空时主动作是编辑当前题库失效时主动作是重新选择或回退默认。状态主动作兜底noDeck创建题库导入演示题库missingCurrent重新选择回退默认题库emptyAnswers编辑当前题库切换其他题库这个表能直接指导 UI而不是只指导 Service。服务和页面各验一次服务层验证看返回的HomeReadyState页面层验证看用户是否有可点击恢复入口。两层只验一层都会漏问题服务正确但页面没入口用户仍然卡住页面有入口但服务最后不拦截快捷路径仍可能崩。服务样本noDeck / missingCurrent / emptyAnswers / ready 页面样本首页按钮 / 快捷推荐 / 历史再次提问 / 冷启动恢复 通过标准每个不可抽取状态都有 reason 和 recoveryAction抽取服务拒绝空候选集。要特别检查历史再次提问和快捷推荐因为它们最容易绕过首页按钮状态。发布前不要让空态截图变成假证据空态截图只能证明页面有提示不能证明抽取服务安全。交付记录要把截图和服务样本放在一起。材料证明范围仍需补充空态截图用户能看到恢复入口抽取服务是否拦截Service 返回样本状态判断正确页面是否正确消费冷启动记录当前选择恢复安全快捷入口是否一致这样写读者不会误以为“按钮灰了”就代表空题库链路已经闭合。恢复动作要能跨页面复用空题库恢复不能只服务首页。历史页的“再次提问”、结果页的“再抽一次”、快捷推荐卡片都可能进入同一条抽取链路。因此RecoveryAction最好能被多个入口复用而不是写成首页私有按钮逻辑。classRecoveryNavigator{statichandle(action:RecoveryAction,deckId:string):void{if(actioncreateDeck){NavigationService.openDeckCreate();}elseif(actioneditCurrentDeck){NavigationService.openDeckEdit(deckId);}elseif(actionselectDeck){NavigationService.openDeckSelector();}}}这个协调层不负责判断题库状态只负责把服务层给出的动作连接到页面。这样恢复策略仍在HomeReadinessService导航执行也不会散到每个按钮里。人工评审时看提示是否能变成动作空态文案如果只解释原因不提供动作用户还是会卡住。评审时不要只看文字是否友好而要点每个恢复按钮确认它能进入创建、导入、编辑或选择题库的真实页面。评审样本 noDeck - 点击创建题库 - 进入 DeckCreatePage missingCurrent - 点击重新选择 - 打开 DeckSelector emptyAnswers - 点击添加答案 - 进入 DeckEditPage 并定位到答案区 fallbackDefault - 点击继续 - currentDeckId 写回默认题库这组样本能区分“空态设计完成”和“恢复链完成”。前者只让页面好看后者才能让用户继续完成抽取任务。小结空题库要给恢复链而不是只禁用按钮。HomeService 返回可抽取状态和恢复动作页面展示具体入口抽取服务做最后防线这样各种入口都能安全处理空数据。

相关新闻

告别手动操作:SeleniumBasic让VBScript开发者轻松掌控浏览器自动化

告别手动操作:SeleniumBasic让VBScript开发者轻松掌控浏览器自动化

告别手动操作:SeleniumBasic让VBScript开发者轻松掌控浏览器自动化 【免费下载链接】SeleniumBasic A Selenium based browser automation framework for VB.Net, VBA and VBScript 项目地址: https://gitcode.com/gh_mirrors/se/SeleniumBasic 还在为每天重…

2026/8/1 19:05:28 阅读更多 →
兼容性还是安全性?一个关于 Fastjson 的十年之问

兼容性还是安全性?一个关于 Fastjson 的十年之问

兼容性还是安全性?一个关于 Fastjson 的十年之问在软件工程的世界里,框架设计者时常会面对一道艰难的选择题:当兼容性与安全性发生冲突时,应该站在哪一边?Fastjson 的十年漏洞史,恰好为这道题提供了一个血淋…

2026/8/1 19:04:28 阅读更多 →
九大网盘直链下载助手:告别限速,实现真正的高速下载体验

九大网盘直链下载助手:告别限速,实现真正的高速下载体验

九大网盘直链下载助手:告别限速,实现真正的高速下载体验 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移…

2026/8/1 19:04:28 阅读更多 →

最新新闻

如何利用Cloudflare Workers Next.js SaaS Template构建多租户SaaS平台

如何利用Cloudflare Workers Next.js SaaS Template构建多租户SaaS平台

如何利用Cloudflare Workers Next.js SaaS Template构建多租户SaaS平台 【免费下载链接】cloudflare-workers-nextjs-saas-template Cloudflare Workers/Next.js SaaS Template 项目地址: https://gitcode.com/gh_mirrors/cl/cloudflare-workers-nextjs-saas-template C…

2026/8/1 19:44:41 阅读更多 →
Voron-Tap进阶技巧:热补偿优化、碰撞保护与长期维护全攻略

Voron-Tap进阶技巧:热补偿优化、碰撞保护与长期维护全攻略

Voron-Tap进阶技巧:热补偿优化、碰撞保护与长期维护全攻略 【免费下载链接】Voron-Tap 项目地址: https://gitcode.com/gh_mirrors/vo/Voron-Tap Voron-Tap作为3D打印领域备受欢迎的自动调平模块,凭借其高精度和可靠性成为许多DIY爱好者的首选。…

2026/8/1 19:44:41 阅读更多 →
居家采集模式的技术实现与具身智能数据质量控制体系研究

居家采集模式的技术实现与具身智能数据质量控制体系研究

居家采集模式的技术实现与具身智能数据质量控制体系研究2026年7月31日,山东泰安泰山区的实践案例引发业界关注:一批社区居民通过头戴运动相机与双手机阵列,在家中完成日常家务操作的同时实现了具身智能数据的标准化采集。每段10分钟以上的家务…

2026/8/1 19:44:41 阅读更多 →
macos-wallpaper完全指南:如何轻松管理你的macOS桌面壁纸

macos-wallpaper完全指南:如何轻松管理你的macOS桌面壁纸

macos-wallpaper完全指南:如何轻松管理你的macOS桌面壁纸 【免费下载链接】macos-wallpaper Manage the desktop wallpaper on macOS 项目地址: https://gitcode.com/gh_mirrors/ma/macos-wallpaper macos-wallpaper是一款强大的macOS桌面壁纸管理工具&#…

2026/8/1 19:44:41 阅读更多 →
ComfyUI前端部署终极指南:三步构建AI图像生成工作流

ComfyUI前端部署终极指南:三步构建AI图像生成工作流

ComfyUI前端部署终极指南:三步构建AI图像生成工作流 【免费下载链接】ComfyUI_frontend Official front-end implementation of ComfyUI 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_frontend ComfyUI_frontend是ComfyUI官方前端实现,为…

2026/8/1 19:44:41 阅读更多 →
5分钟告别Windows预览版:无需微软账户的快速退出方案

5分钟告别Windows预览版:无需微软账户的快速退出方案

5分钟告别Windows预览版:无需微软账户的快速退出方案 【免费下载链接】offlineinsiderenroll OfflineInsiderEnroll - A script to enable access to the Windows Insider Program on machines not signed in with Microsoft Account 项目地址: https://gitcode.c…

2026/8/1 19:43:41 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/8/1 13:02:46 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →