uniapp使用学习记录--页面跳转遇到的一点坑

836 阅读1分钟

在uniapp打包安卓app 和 安卓真机调试时遇到的问题 暂时没有尝试ios 在h5运行环境下本问题不存在

在点击进入一个页面后无任何操作直接在onload onshow这些页面生命周期钩子中操作跳转其他页面不生效

onLoad() {
		uni.redirectTo({
			url: '/bundle/pages/user_vip/user_vip'
		})
	}

刚遇到这个问题的时候以为是页面路径或者其他的一些配置问题,同代码在h5下正常,找半天没找到问题,而后试了下添加一个按钮点击事件去跳转

<button @click="goVip">测试</button>

goVip(){
	uni.redirectTo({
		url: '/bundle/pages/user_vip/user_vip'
	})
},

就发现点击事件是可以正常跳转的

那就说明这段执行代码本身没有问题,于是就想到了用异步的方式执行试试

promise方式

onLoad() {
			new Promise(resolve=>{
				resolve()
			}).then(res=>{
				uni.redirectTo({
					url: '/bundle/pages/user_vip/user_vip'
				})
			})
			
		}

页面还是无法正常跳转

还试了下this.nextTick 按目前的理解this.nextTick  按目前的理解this.nextTick本质上也是类似一个promise 生成一个微任务,结果果然也一样不行

既然微任务不行我再试试宏任务

setTimeout方式

setTimeout(()=>{
					uni.redirectTo({
						url: '/bundle/pages/user_vip/user_vip'
					})
				},500)

这下可以了 进入页面后可以直接跳转了

在后续还有一些尝试 比如把setTimeout的延时设置为100 也不能正常跳转 具体的原因受水平限制暂时无法理解了。

最后让我们继续努力学习!