uni-app图片跳转必须用uni.navigateto,@click绑定方法更灵活;路径须为pages.json注册的绝对路径、大小写敏感、不可多斜杠;tabbar页用uni.switchtab;需防连点、fail兜底、url传参并encodeuricomponent。

uni-app中图片点击跳转必须用uni.navigateTo而非navigator组件
直接给<image></image>加@click就行,不需要套navigator——后者只支持url属性跳转,且在App和H5平台不生效,容易白屏或静默失败。
-
navigator组件的url必须是静态字符串,无法动态拼接参数或做逻辑判断 -
<image></image>更灵活,可校验、防抖、加loading - 若图像是
background-image或伪元素渲染,无法绑定事件,必须用<image></image>或<view></view>包裹
路径必须是pages.json里已注册的绝对路径
比如目标页是pages/detail/detail.vue,跳转时写/pages/detail/detail,不能漏掉开头的/,也不能带.vue后缀。
- 大小写敏感:Windows开发机可能不报错,但小程序真机和iOS会
page not found - 路径中多一个
/(如//pages/detail/detail)会导致H5跳转404,App端白屏 - tabBar页面(如
/pages/tabbar/home)不能用uni.navigateTo,得改用uni.switchTab
防连点+失败降级是上线必备项
用户手快连点两次,可能触发两次跳转,导致页面栈混乱甚至崩溃。fail回调在H5平台基本不触发,不能依赖它捕获错误。
- 加简单节流:
if (this.isJumping) return; this.isJumping = true; setTimeout(() => { this.isJumping = false }, 500) - 跳转后立刻重置状态,避免
uni.navigateBack返回时误触发 - fail回调里别只打日志,至少
uni.showToast提示用户,或uni.switchTab兜底到首页
传参要用URL query,别用extraData
uni.navigateTo不支持extraData字段,那是uni.navigateToMiniProgram专用的。所有参数必须拼在url里,且中文要encodeURIComponent。
- 正确:
url: `/pages/detail/detail?id=${id}&name=${encodeURIComponent(name)}` - 错误:
url: '/pages/detail/detail', extraData: { id, name }→ 参数完全丢失 - 接收方在
onLoad里取:onLoad(options) { console.log(options.id, options.name) }
uni.navigateTo和uni.switchTab不能互换,一错就整个跳转链失效。










