uni-app 非纯nvue项目使用uni.navigateTo跳转新页面会出现跳转两次的bug

uni-app 非纯nvue项目使用uni.navigateTo跳转新页面会出现跳转两次的bug

操作步骤:

  • demo运行到手机后,切换到我的页面,点击右上角的设置图标,即可重现

预期结果:

  • 预期只会跳转一次

实际结果:

  • 实际跳转了两次

bug描述:

  • 非纯nvue项目(混合vue/nvue页面,demo已经上传到附件了),vue跳转vue,使用uni.navigateTo跳转新页面,会出现跳转两次的bug,打印了下日志,uni.navigateTo的回调触发了4次,麻烦大神们帮忙看下
开发环境 版本号 项目创建方式
Windows 11 企业版
HBuilderX 正式 4.87
Android 10 华为
P30 pro

ceshi.zip


更多关于uni-app 非纯nvue项目使用uni.navigateTo跳转新页面会出现跳转两次的bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

非纯nvue项目:混合vue/nvue页面,demo已经上传到付件了

更多关于uni-app 非纯nvue项目使用uni.navigateTo跳转新页面会出现跳转两次的bug的实战教程也可以访问 https://www.itying.com/category-93-b0.html


你好 可以查看一下uni.navigateTo的回调触发了几次 demo可以发在回复区吗?帮你测试下

demo我放在评论区了

该bug反馈内容不够完整。BUG描述较为简略,未说明"非纯nvue项目"的具体构成(如是否混合vue/nvue页面)及是否有特殊配置;缺少关键代码示例,无法判断跳转逻辑实现;复现步骤模糊(“我的页面”、"设置图标"未明确定义),官方难以直接复现。分类信息较完整,包含HBuilderX 4.87、Android 10等必要环境信息。
根据知识库分析:

知识库明确说明App平台仅支持预加载nvue页面,且"当同一个预载页面已被打开,再次打开相同url时会打开新的非预载页面"。用户描述的"跳转两次"现象可能与预加载机制冲突有关——若页面被预加载后,又通过uni.navigateTo跳转相同url,可能触发预加载页面和新页面双重打开。
知识库强调路由API目标页面必须在pages.json注册,若目标页面配置异常可能导致重复跳转。
用户使用HBuilderX 4.87(非最新版),建议先升级至最新正式版验证,因旧版本可能存在已修复的路由问题。

该问题可能属于用户代码逻辑缺陷(如重复调用跳转API)或预加载机制适配问题,非必然框架bug。需用户提供具体跳转代码及pages.json配置才能进一步定位。建议参考uni.navigateTo文档检查跳转逻辑,并确保未同时使用preloadPage与navigateTo操作相同页面。 内容为 AI 生成,仅供参考

这个问题通常是由于页面事件处理不当导致的重复触发。从你描述的情况看,uni.navigateTo 被多次调用,很可能是点击事件被重复绑定或触发了多次。

检查你的设置图标点击事件处理函数,确保没有在短时间内被多次触发。常见原因包括:

  1. 事件绑定在多个生命周期中重复执行
  2. 点击事件没有适当的防抖处理
  3. 组件可能存在重复渲染导致事件监听器被多次添加

建议检查相关页面的代码,特别是 onLoadonShow 等生命周期中是否有重复绑定事件的情况。另外,可以在跳转前添加一个标志位来防止重复跳转:

let isNavigating = false

function navigateToSettings() {
  if (isNavigating) return
  isNavigating = true
  
  uni.navigateTo({
    url: '/pages/settings/settings',
    complete() {
      setTimeout(() => {
        isNavigating = false
      }, 500)
    }
  })
}
回到顶部