尧图精选

平行视界购物模式不是简单左右分栏:HarmonyOS 7 连续点详情时栈该怎么走

🕒 发布时间:2026/10/1 17:45:27 📁 来源:尧图网络
平行视界购物模式不是简单左右分栏HarmonyOS 7 连续点详情时栈该怎么走把列表放左边、详情放右边只能算双栏布局。平行视界购物模式强调左右推挤和连续浏览用户在右侧详情继续点推荐项时已有详情应进入可返回的链条返回时先退详情链最后才回到列表。若只保存一个 selectedId第二次选择会覆盖第一次返回行为就会和用户预期断开。先把边界说明白关注点应该怎么理解容易踩的坑左侧列表保持浏览上下文和滚动锚点详情变化不应重建整个列表右侧详情形成连续详情链推荐项跳转也进入同一栈全局返回先弹出右侧详情右侧为空后再退出当前页面这张表不是把官方文档换一种说法而是把接口边界变成能检查的工程条件。适配前先确认当前应用是否命中条件再决定是否改代码。没有命中的模块不应为了“统一写法”一起重构命中的模块也不能只改到编译不报错。案例一连续打开三个详情后逐级返回使用独立的 detailStack 保存右侧链列表滚动位置单独保存。选择列表项时初始化链在详情中继续选择时追加返回只弹出一项。纯函数先验证栈行为再交给 Navigation 或平行视界能力映射。type ShoppingState { anchor: string | null; detailStack: string[] }; function openDetail(s: ShoppingState, id: string, fromList: boolean): ShoppingState { return { anchor: fromList ? id : s.anchor, detailStack: fromList ? [id] : [...s.detailStack, id] }; } function backDetail(s: ShoppingState): ShoppingState { return { ...s, detailStack: s.detailStack.slice(0, -1) }; } let s openDetail({ anchor: null, detailStack: [] }, A, true); s openDetail(s, B, false); s openDetail(s, C, false); s backDetail(s); if (s.detailStack.join(,) ! A,B || s.anchor ! A) throw new Error(详情链错误);这一段先验证外围决策。它的价值是让输入和结果可重复不依赖页面当前碰巧处于什么状态接入 ArkUI 或系统能力时再把结果映射成实际节点、路由或接口调用。案例二从双栏缩回单栏时保持当前详情折叠屏合拢或窗口缩小时右侧当前详情不能消失也不应把整条链塞进一个路由参数。将双栏状态投影为单栏路径列表为根detailStack 依次变成路径恢复双栏时再根据路径重建右侧链。function toSinglePath(stack: string[]): string[] { return [list, ...stack.map(id detail/ id)]; } function currentDetail(path: string[]): string | null { const item [...path].reverse().find(x x.startsWith(detail/)); return item ? item.slice(7) : null; } const path toSinglePath([A,B]); if (currentDetail(path) ! B) throw new Error(窗口切换丢失当前详情);第二个案例故意覆盖与第一个不同的失败条件。真实工程还应加入快速重复操作、前后台切换、窗口尺寸变化、空数据和恢复路径避免只验证一次成功流程。为什么选择这种做法两套页面各自维护状态会造成收藏、推荐跳转和返回不同步共享一份可序列化状态再分别投影为单栏和双栏导航更可靠。验收重点是连续详情、全局返回、合拢展开和进程恢复而不是只截一张左右布局图。如果团队准备封装建议把公开接口保持在“输入事实、输出决策”的层级不让调用方直接依赖底层节点对象。这样既方便复用也便于写断言需要系统能力的部分留在薄薄的适配层升级时更容易定位。怎样验证哪些结论还不能提前说先把验证分成三层。第一层是纯逻辑输入、状态转换和边界条件可以在宿主环境运行断言第二层是 API 26 编译检查接口签名、系统能力和模型约束第三层才是目标设备检查触摸、键鼠、屏幕朗读、横竖屏、窗口缩放和前后台恢复。三层证据不能混在一句“已经跑通”里。当前示例中的纯 TypeScript 决策函数可以独立测试用于证明分支没有自相矛盾涉及 ArkUI 节点、系统手势、跨设备能力和系统服务的片段仍要使用 API 26 SDK 编译并在支持该能力的 HarmonyOS 7 设备或云调试设备上验收。这样写不是保守而是避免把没有发生过的真机结果当成事实。动态页面还要观察状态变化后的第二次结果首次进入正确不代表弹窗关闭、列表更新或窗口缩放后仍然正确。每次状态切换都应重新核对当前节点、焦点目标、返回路径和数据快照避免旧缓存继续影响新页面。建议每次留下以下记录DevEco Studio、SDK、targetSdkVersion 和设备系统版本。触发输入、页面层级、窗口尺寸、操作方式与最终状态。正常路径、空数据、快速重复操作、旋转或窗口缩放后的结果。屏幕朗读、字体放大、深浅色和键盘焦点是否仍然可用。性能对照使用同一批数据、同一设备状态和同一测量区间。可以复用成什么不要把适配判断散落在页面 Builder 中。更稳的结构是“能力探测或尺寸输入 - 纯函数决策 - 页面渲染 - 设备证据”。纯函数负责输出稳定的布局或交互意图页面只消费结果下一次系统升级时优先修改边界层和测试样本不必把所有页面重新翻一遍。发布前自查文章讨论的是 HarmonyOS 7 / API 26 当前资料不拿旧版本页面替代新接口。两个案例的输入、失败现象和解决目标不同不是同一段代码换名称。代码中的常量有来源没有来源的数值明确写成示例策略不伪装成系统规定。性能、兼容性与无障碍结论都有可重复的检查方法。日志不保存账号、文件内容、设备标识和其他敏感数据。官方资料HarmonyOS 7 平行视界新能力解读鸿蒙应用多设备通用适配指南
上一篇/下一篇内容由系统自动关联 返回资讯列表 →