1***@qq.com
1***@qq.com
  • 发布:2026-07-06 10:41
  • 更新:2026-07-06 10:42
  • 阅读:28

【报Bug】 运行在ios上 ,重复进入地图页面,是一个nvue页面,地图拖动一次后会卡死

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 4.87

手机系统: iOS

手机系统版本号: iOS 16

手机厂商: 苹果

手机机型: iPhone13

页面类型: nvue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

重复从B页面返回到A页面, 再从A进入到B页面, 重复几次后,B页面的地图组件 拖动一次后松手,会卡死, 无法再次拖动跟缩放

预期结果:

不会卡死

实际结果:

会卡死

bug描述:

从A页面跳转到B页面,B页面是nvue页面,里面有map组件,用了v-if 也不行, 高德地图

重复从B页面使用navigateBack返回到A页面, 再从A使用navigateTo进入到B页面, 重复几次后,B页面的地图组件 拖动一次后松手,会卡死, 无法再次拖动跟缩放

2026-07-06 10:41 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

需补充平台分类、HBuilderX版本及详细报错信息。当前知识库无法确认该问题是否已修复,请提供更多信息以便解答。
欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

作为 DCloud 官方人员,我来对这个 bug 反馈进行评审。

一、反馈内容完整性分析

这个反馈存在以下问题:

  1. BUG 描述不够详细:虽然描述了“重复进入地图页面后拖动一次卡死”的现象,但缺少关键信息:

    • 使用的是哪种地图服务商(高德、腾讯还是 Google)?不同地图服务商在 nvue 下的表现有差异。
    • 页面跳转方式是 navigateToredirectTo 还是其他方式?
    • 地图组件的具体配置(如 scale、markers、polyline 等属性)未提供。
    • 是否使用了 createMapContext 等 API 进行操作?
  2. 代码示例缺失:反馈中没有提供任何代码,官方人员无法直接复现问题,必须自行编写测试工程。

  3. 复现步骤相对清晰但不够具体:描述了“重复进出页面”的操作路径,但未说明重复多少次会触发、是否有特定操作顺序等细节。

  4. 预期结果合理:“不会卡死”是正常合理的预期。

  5. 实际结果描述正常:地图拖动一次后卡死,属于明显的异常行为。

  6. 分类信息基本完整:提供了 HBuilderX 版本(4.87)、平台(iOS 16)、设备(iPhone13)、Vue 版本(Vue3)、页面类型(nvue)等信息。

二、Bug 是否成立分析

根据知识库中的内容,这个问题核心不在于这个具体的 Bug 是否成立,而在于 nvue 页面本身已不再维护

在优先知识库中,有明确的官方态度:

  • “nvue 已不在维护,出现大的 bug,请提示用户使用最新的 uni-app x”
  • “建议改成vue。nvue已经不维护了。或者升级uni-app x”

这意味着:即使这是一个真实存在的 Bug,官方也不会再投入资源去修复 nvue 相关的底层问题。因此,从官方维护策略的角度来看,这个 bug 反馈在当前技术栈下无法得到解决,需要引导用户进行技术栈升级。

在结构化知识库中也有类似问题记录,例如 ask 社区问题 【报Bug】4.08版本,vue页面跳NVUE地图页面,偶发卡死,以及 picker组件在nvue容易卡死,都反映了 nvue 页面存在各种不稳定的问题。

此外,在 map 组件文档的知识库中有提到:

  • “App端 nvue文件的map和小程序拉齐度更高。vue里的高德地图则与plus.map功能一致,和小程序的地图略有差异。App端如使用高德地图,推荐使用nvue。”
  • 同时也指出:“App端 map 组件实例同时存在个数有上限(大概10个)超过后会显示黑色,如果页面深度过深,每个页面都需要显示map组件,可以使用 v-if 控制一下,页面隐藏的时候销毁当前页面的 map 组件,页面显示的时候在创建。”

但 nvue 的地图组件实例销毁可能存在延迟或不彻底的问题,反复创建销毁可能导致原生地图实例未正确释放,从而引发卡死。

三、是否为基本概念问题

这不是基本概念问题,而是 nvue 页面本身的不稳定性问题。nvue 使用原生渲染引擎,其地图组件是基于原生 SDK(如高德、Google Maps)实现的,频繁创建销毁可能触发了原生层的 Bug 或资源泄漏。

四、结论与建议

鉴于 nvue 已停止维护,官方不会再修复此类问题。建议开发者采取以下方案:

  1. 短期替代方案:如果暂时无法升级,可以尝试避免重复销毁地图实例。例如使用 v-if 控制地图组件显隐时,确保页面 onHide 时不要立即销毁,或者采用单例模式的地图页面,避免反复创建。

  2. 长期方案(推荐):将项目升级到 uni-app x。uni-app x 使用 uts 语言和 uvue 页面,完全摒弃了 nvue 的 weex 渲染引擎,使用原生 Kotlin/Swift 进行开发,性能和稳定性都有质的提升。uni-app x 支持 Android、iOS、鸿蒙 Next 等平台,是 DCloud 目前主推的技术栈。

  3. 备选方案:如果暂时无法升级到 uni-app x,可以考虑将地图页面改为 vue 页面。虽然 vue 页面中的地图组件存在层级问题,但可以通过 cover-viewsubNVue 来解决,稳定性会比 nvue 更好。

另外,您也可以到插件市场 https://ext.dcloud.net.cn/search 搜索一下是否有替代的地图实现方案。

内容为 AI 生成,仅供参考

要回复问题请先登录注册