地图圈系统——微信小程序关于页面切换的几个问题
一、微信小程序返回上一个页面并刷新上一个页面
在此项目中比如在收藏详情页面取消收藏,要同步到上一个页面,即上一页面要反馈出操作后结果的信息,此时应该如何解决呢?
首先获取当前页面栈
var pages = getCurrentPages();
var currPage = pages[pages.length - 1]; //当前页面
var prevPage = pages[pages.length - 2]; //上一个页面
然后对上一个页面,prevPage进行操作,如果要刷新的话,可以使用prevPage.onLoad()方法。这样就能刷新上一页面了。
如果要进行创建,采用如下代码
var pages = getCurrentPages();
var prevPage = pages[pages.length - 2];
// 调用列表页的获取数据函数
prevPage.loadData();
// 跳转
wx.redirectTo({
url: '/pages/info/info',
});
如果要进行删除,采用如下代码
var pages = getCurrentPages();
var prevPage = pages[pages.length - 2];
prevPage.loadData();
wx.navigateBack({
delta: 1,
})
这里需要使用navigateBack返回上一级页面。
二、如何停顿一段时间再进行页面切换(setTimeout方法)
number setTimeout(function callback, number delay, any rest)
参数
function callback
回调函数
number delay
延迟的时间,函数的调用会在该延迟之后发生,单位 ms。
any rest
param1, param2, …, paramN 等附加参数,它们会作为参数传递给回调函数。
返回值
number
定时器的编号。这个值可以传递给 clearTimeout 来取消该定时。
示例代码:
setTimeout(() => {
//需要定时的代码区域
}, 1000);//1000代表1秒
在项目中退出登录时应用到了这一个技术,有一秒的缓冲使得跳转显得不是很突兀,提升用户体验感。
三、报错:{“errMsg”:“redirectTo:fail can not redirectTo a tabbar page”}及跳转总结
当调用redirectTo方法页面跳转为tabar页面时报错。
属于tabbar的页面,只能通过wx.switchTab来跳转。
示例代码:
// 提交完跳回巩固页面
wx.switchTab({
url: '/pages/my/my',
})
项目中用到这个技术的原因是my页面是tabar页面,所以要用swichTab方法。
总体项目是退出登录后停顿一秒返回到my页面,my页面是一个tabar页面。
项目代码示例:
setTimeout(() => {
wx.switchTab({
url: '/pages/my/my',
})
}, 1000);
几种跳转方式比较
1.wx.redirectTo:关闭当前所在页面,再跳转到指定的非TabBar页面。不受页面层数限制。
2.wx.navigateTo:不关闭当前所在页面,跳转到指定的非TabBar页面,注意页面路径限制是五层。左上角会显示一个返回按钮,可以直接返回到上一层页面。
3.wx.switchTab:只可以跳到属于tabBar的页面