微信小程序路由问题
1.微信小程序调用reLaunch导致小程序回退到微信的场景。
解决:
思路:使用back的方式,因为这个项目的各种配置和官网差异较大,所以没找到reLaunch的根本问题。
/**
* 返回指定页面,不传值默认返回上一页
* @param pagePath string pages/xx/xxx/xx
*/
const backPage = (pagePath) => {
const pages = getCurrentPages()
const positionFunc = (arr) => {
for (let index = 0; index < arr.length; index++) {
if (arr[index].route.indexOf(pagePath) !== -1) {
return index
}
}
return null
}
let position = 0
if (pagePath) {
position = pages.length - 1 - positionFunc(pages)
}
wx.navigateBack({
delta: position
})
}
/**
* 格式化任意时间格式
* YYYY-MM-DD HH:mm:ss | YYYY-MM-DD | YYYY/MM | HH:mm | ...
* @param date Date | String | Number 时间
* @param formatStr string 时间格式
* @param padStart boolean 是否需要补零
*/
const formatSomeDate = (date, formatStr = 'YYYY-MM-DD HH:mm:ss', padStart = true) => {
if ([null, undefined, ''].includes(date)) {
return null
}
if (typeof date === 'string') {
// 考虑ios兼容问题
date = date.replace(/-/g, '/')
}
const d = new Date(date)
if (padStart) {
return formatStr.replace('YYYY', String(d.getFullYear()))
.replace('MM', ('0' + (d.getMonth() + 1)).slice(-2))
.replace('DD', ('0' + d.getDate()).slice(-2))
.replace('HH', ('0' + d.getHours()).slice(-2))
.replace('mm', ('0' + d.getMinutes()).slice(-2))
.replace('ss', ('0' + d.getSeconds()).slice(-2))
}
return formatStr.replace('YYYY', String(d.getFullYear()))
.replace('MM', String(d.getMonth() + 1))
.replace('DD', String(d.getDate()))
.replace('HH', String(d.getHours()))
.replace('mm', String(d.getMinutes()))
.replace('ss', String(d.getSeconds()))
}
- wx.switchTab 方法用于跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面,通常用于跳转到小程序的主页。切换tabBar
- wx.reLaunch 关闭所有页面,打开到应用内的某个页面。这个使用需要注意,没必要别用,使用的话,需要仔细观察 getCurrentPages() 的路由变化。
- wx.redirectTo 替换当前页面的路由
- wx.navigateTo 跳转到一个页面
- wx.navigateBack 返回前面的历史页面
官网: wx.reLaunch(Object object) | 微信开放文档
原文地址:https://blog.csdn.net/qq_30620793/article/details/143779569
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!