分别为wx.navigateTo、wx.redirectTo、wx.reLaunch、wx.switchTab,前面三种可通过url路径携带参数实现参数传递,如
保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。
参数:
1、url
2、event
这个参数有点理解,用另一文章解释:
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
pageId | string | '' | 是 | 页面 ID |
packageName | string | '' | 否 | 子应用名称 |
params | object | {} | 否 | query object 对象 |
events | Object | {} | 否 | 页面间通信接口,用于监听被打开页面发送到当前页面的数据。基础库 2.7.3 开始支持。微信 API 参看 只支持小程序 |
success | function | 无 | 否 | 接口调用成功的回调函数,只支持小程序 |
fail | function | 无 | 否 | 接口调用失败的回调函数 只支持小程序 |
complete | function | 无 | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) 只支持小程序 |
redirectTo(object)
关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。
参数:
1、url
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
pageId | string | '' | 是 | 页面 ID |
packageName | string | '' | 否 | 子应用名称 |
params | object | {} | 否 | query object 对象 |
events | Object | {} | 否 | 页面间通信接口,用于监听被打开页面发送到当前页面的数据。基础库 2.7.3 开始支持。微信 API 参看 只支持小程序 |
success | function | 无 | 否 | 接口调用成功的回调函数,只支持小程序 |
fail | function | 无 | 否 | 接口调用失败的回调函数 只支持小程序 |
complete | function | 无 | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) 只支持小程序 |
reLaunch(object)
关闭所有页面,打开到应用内的某个页面(因浏览器限制,Web 下能后退页面)。
reLaunch
reLaunch(object)
关闭所有页面,打开到应用内的某个页面(因浏览器限制,Web 下能后退页面)。
参数:
1、url
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
pageId | string | '' | 是 | 页面 ID |
packageName | string | '' | 否 | 子应用名称 |
params | object | {} | 否 | query object 对象 |
events | Object | {} | 否 | 页面间通信接口,用于监听被打开页面发送到当前页面的数据。基础库 2.7.3 开始支持。微信 API 参看 只支持小程序 |
success | function | 无 | 否 | 接口调用成功的回调函数,只支持小程序 |
fail | function | 无 | 否 | 接口调用失败的回调函数 只支持小程序 |
complete | function | 无 | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) 只支持小程序 |
wx.switchTab(object)
跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
而通过wx.switchTab跳转到tabBar页面时,无法采用上面方式传递参数,可用如下两种解决方法:
//app.js中
globalData: {
info:null,
userInfo: null
}
//在传递参数的页面js文件中
const app=getApp()
app.globalData.info="info"
//在接收参数的页面js文件中
const app=getApp()
console.log('通过app.js全局变量传递参数',app.globalData.info)
//在传递参数的页面文件js中
wx.setStorageSync('info', info)
//在接收参数的页面文件js中
console.log('通过缓存传递参数',wx.getStorageSync('info'))
页面跳转参数传递有很多中方式,这里只说一种非常简单的。
Click: function () {
console.log("我来啦")
let name = '传递的数据'; // 跳转传参的参数
wx.navigateTo({ //在接收页面的url后面加上“?自定义名称=字符串”就可以通过url传值
url: '../test2/my?name=' + '我就是要传递的数据'//此处注意中文符号与引文符号的?
})
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log(options.name)
this.setData({// 把从index页面获取到的属性值赋给详情页的my,供详情页使用
name:options.name
})
},
第二个页面的测试页
显示内容:{{name}}
Click: function () {
console.log("我来啦")
var name = '传递的数据'; // 跳转传参的参数
var name2 = '传递的数据2';
var name3 = '传递的数据3';
wx.navigateTo({ //在接收页面的url后面加上“?自定义名称=字符串”就可以通过url传值
url: '../test2/my?name=' + name + "&name2=" + name2+ "&name3=" + name3 //此处注意中文符号与引文符号的?
})
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
console.log(options.name)
this.setData({// 把从index页面获取到的属性值赋给详情页的my,供详情页使用
name:options.name,
name2:options.name2,
name3:options.name3
})
},
第二个页面的测试页
显示内容:{{name}}
显示内容:{{name2}}
显示内容:{{name3}}
例如:图片
// xxxx是跳转传照片的数组,先转字符串,再encode
let xxxx = posters.toString()
console.log( encodeURIComponent(xxxx))
wx.navigateTo({
url: '../test2/my?posters=' + encodeURIComponent(xxxx)
})
// onload接收传参数据
onLoad: function (options) {
let xxxx = decodeURIComponent(options.posters) // 先decode再把字符串转数组
let photo = xxxx.split(",");
console.log(photo)
this.setData({
photo: photor
})
},
wx.switchTab({
url: '../test2/my'
})
微信开放社区大佬的解释:https://developers.weixin.qq.com/community/develop/article/doc/00000453df06f07a5c8d91ef856c13