微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

navigator标签使用navigate跳转最多十层问题

uniapp——navigator标签

navigate跳转引起的页面栈堆积问题
项目需要,使用redirect跳转会导致重定向,不利于用户体验。但是用navigate,当数目过多时,navigator不跳转

<script>
	var app = getApp()
	export default {
		data() {
			return {
				isClick:false
			}
		},
		methods: {
				navTap:function(item){
					this.isClick = true;
					// 长度可以设置length>9,我用的时候,大于2可以满足需求,大于10反而会出现太多页面堆积
					var curPages = getCurrentPages().length;
					if(curPages>2) {
						uni.redirectTo({
							url:'/pages/a'
						})
					}else{
						uni.navigateto({
							url:'/pages/a'
						})
					}
			},
		},
		onShow:function(){
			this.isClick = false;
		},
		//  监听页面卸载
		onUnload:function(e){
			if (!this.isClick) {
				uni.navigateBack({
					delta: 1,
				})
			}
		},
	<script>
<template>
	<view  @tap="navTap">跳转下一页面</view>
</template>

页面栈层数到10时,navigate不能点击跳转页面也没有报错,网上找了很多,综合根据我自己的理解整理出来,自己测试可以用的。

补充——

直接使用navigate
提交返回时,返回上一级页面并刷新某一函数实现数据更新

以下仅为示例:

let pages = getCurrentPages()
let prevPage = pages[ pages.length - 2 ];
// 触发上一页 upData 函数(并携带参数)
if (prevPage.route.indexOf('teach') == -1) {  // 返回的路径是否包含teach,用于一个页面不同按钮点击时返回不同的页面
		prevPage.$vm.upData("")
} else{
		prevPage.$vm.upData()
}
// 获取上一页栈
	uni.navigateBack({
		delta: 1
	})

原文地址:https://www.jb51.cc/wenti/3283678.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐