微信小程序--页面跳转(普通跳转、带参数跳转、上个页面路径)
参考文档:https://www.cnblogs.com/liuxin-673855200/p/9506976.html
一、wx.navigateTo(OBJECT)
保留当前页面,跳转到应用内的某个页面
类似于html中的 window.location.href=" "
// 写法
wx.navigateTo({
url: 'test?id=1'
})
小程序中左上角有一个返回箭头,可返回上一个页面也可以通过方法 wx.navigateBack 返回原页面
image.png
二、wx.redirectTo(OBJECT)
关闭当前页面,跳转到应用内的某个页面。
类似于html中的 window.open('你所要跳转的页面');
// 写法
wx.redirectTo({
url: 'test?id=1'
})
左上角没有返回箭头,不能返回上一个页面
image.png
三、wx.switchTab(OBJECT)
跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
// tab路径
{
"tabBar": {
"list": [{
"pagePath": "index",
"text": "首页"
},{
"pagePath": "other",
"text": "其他"
}]
}
}
// 写法
wx.switchTab({
url: '/index'
})
wx.navigateTo 和 wx.redirectTo 不允许跳转到 tabbar 页面,只能用 wx.switchTab 跳转到 tabbar 页面
image.png
四、wx.reLaunch(OBJECT)
关闭所有页面,打开到应用内的某个页面。
跟wx.redirectTo 一样左上角不会出现返回箭头,但两者却不完全相同
这里要提到小程序中的 getCurrentPages()
方法
在wx.navigateTo中,每跳转一个新的页面,其原始页面就会被加入堆栈,通过调用wx.navigateBack(OBJECT)可通过获取堆栈中保存的页面 返回上一级或多级页面;
wx.redirectTo,方法则不会被加入堆栈,但仍可通过wx.navigateBack(OBJECT)方法返回之前堆栈中的页面
wx.reLaunch 方法则会清空当前的堆栈。
-----------------------------------举例------------------------------------
// 此处是A页面
wx.navigateTo({
url: 'B?id=1'
})
// 此处是B页面
wx.navigateTo({
url: 'C?id=1'
})
// 在C页面内 navigateBack,将返回b页面
wx.navigateBack({
delta: 1
})
// 此处是B页面
wx.redirectTo({
url: 'C?id=1'
})
// 在C页面内 navigateBack,则会返回a页面
wx.navigateBack({
delta: 1
})
// 此处是B页面
wx.reLaunch({
url: 'C?id=1'
})
// 在C页面内 navigateBack,则无效
五、返回上一页
// 写法
wx.navigateBack({
delta: 1
})
六、带参数页面跳转
参考链接:https://blog.csdn.net/solocao/article/details/84590700
小程序原生写法:
参考官网:https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateTo.html
// 跳转
wx.navigateTo({
url: 'test?id=1'
})
// 加载
Page({
onLoad: function(option){
console.log(option.query)
}
})
mpvue中写法:
// 原始页面
methods: {
goDetail() {
wx.navigateTo({
url: '/pages/active/detail?name=七號&sex=女'
})
}
}
// 跳转后页面
methods: {
// 获取方法
getQuery() {
/* 获取当前路由栈数组 */
const pages = getCurrentPages()
const currentPage = pages[pages.length - 1]
const options = currentPage.options
return options
},
// 调用方法
getParameter() {
console.log(this.getQuery())
}
}
七、获取上一个跳转过来的页面路径
微信小程序怎么判断是从哪个页面跳转进来的
参考链接:https://blog.csdn.net/weixin_43099985/article/details/82965689
onLoad: function (options) {
let pages = getCurrentPages();
let prevpage = pages[pages.length - 2];
console.log(prevpage.route)
},