微信小程序第一节 ——自定义顶部、底部导航栏以及获取胶囊体位置信息。
微信小程序第二节 —— 自定义组件。
- 作 者:是江迪呀
- ✒️本文关键词:
微信小程序
、页面跳转
、移动端
、前端
- ☀️每日 一言:有些事情不是对的才去坚持,而是坚持了它才是对的!
书接上回 ,dai ga hou啊!我是 是江迪呀。在一个完整的微信小程序中,肯定不止一个页面,多个页面就一定会牵扯到页面的跳转。那么就让我们一起来了解下,微信小程序的页面跳转!
tabBar
页面。navigateTo
的最大跳转深度为10层,即最多返回到前面的10个页面。(栈
中算上当前页面最多存储10个页面的url
,如果超出就会报栈溢出
)// 在当前页面中调用 navigateTo 方法跳转到目标页面
wx.navigateTo({
url: '/pages/detail/detail',
success: function(res) {
// 跳转成功
console.log('navigateTo success:', res);
},
fail: function(res) {
// 跳转失败
console.log('navigateTo fail:', res);
}
})
options
属性来获取参数。多个参数使用&
来拼接。wx.navigateTo({
url: '/pages/detail/detail?id=123&name=apple'
})
目标页面取参:
Page({
onLoad: function(options) {
// 获取跳转参数
console.log('id:', options.id);
console.log('name:', options.name);
}
})
在当前页面中调用navigateTo方法:
wx.navigateTo({
url: '/pages/detail/detail'
})
在当前页面中定义一个options对象:
var options = {
id: 123,
name: 'apple'
}
在目标页面中通过options属性获取参数:
Page({
onLoad: function(options) {
// 获取跳转参数
console.log('id:', options.id);
console.log('name:', options.name);
}
})
在当前页面中将参数保存到全局数据中:
getApp().globalData.id = 123;
getApp().globalData.name = 'apple';
wx.navigateTo({
url: '/pages/detail/detail',
});
在目标页面中获取全局数据中的参数:
Page({
onLoad: function() {
console.log('id:', getApp().globalData.id);
console.log('name:', getApp().globalData.name);
}
})
wx.navigateTo
的使用场景最广泛,基本上一级、二级页面之间的跳转都用它。它适合使用在打开新的页面,支持返回操作的场景中,比如详情页、结果页的跳转。
tabBar
页面。将url
写上要跳转的地址即可:
wx.redirectTo({
url: '/pages/detail/detail'
});
url
上拼接参数。wx.redirectTo({
url: '/pages/detail/detail?id=123&name=apple'
});
接收参数:
Page({
onLoad: function(options) {
console.log('id:', options.id);
console.log('name:', options.name);
}
})
wx.navigateTo
传参方式。使用redirectTo方法可以快速地关闭当前页面并跳转到目标页面,适用于一些不需要返回到当前页面的场景。
tabBar
页面的跳转。wx.switchTab
用于tabBar
页面的跳转。一般是将底部导航栏的路径放到一个数组中,点击不同的菜单跳转不同的页面。
data: {
tabList:[
{
"pagePath":"/pages/index/index",
"text":"首页",
},
{
"pagePath":"/pages/index2/index3",
"text":"页面2",
},
{
"pagePath":"/pages/index3/index3",
"text":"页面3",
}
]
},
wx.switchTab({
url: '/pages/index/index2'
})
wx.switchTab
本身不支持页面之前的传参,但是如果想要传递参数的话,就可以使用全局变量来实现数据的传递。
wx.navigateTo
传参方式。switchTab
方法就是单独为跳转tabBar
页面量身定制的,让用户快速地跳转到应用的底部选项卡页面,方便用户访问应用的主页等核心页面,展示核心功能。
wx.reLaunch({
url: '/pages/login/login'
})
url
上拼接参数。wx.reLaunch({
url: '/pages/detail/detail?id=123&name=apple'
})
接收参数:
Page({
onLoad: function(options) {
console.log('id:', options.id);
console.log('name:', options.name);
}
})
wx.navigateTo
传参方式。通过wx.reLaunch()方法实现路由跳转,可以关闭所有页面,打开新的页面,可以实现从当前页面切换到一个完全不同的页面。主要用于小程序的重新启动或者跳转到登录页面、等场景。比如,当用户需要重新开始某个操作流程时,可以使用reLaunch方法。例如,在一个表单提交完成后,用户需要重新填写另一个表单,可以使用reLaunch方法清除之前表单的数据和状态。
navigateBack
的最大跳转深度为10层,即最多返回到前面的10个页面。navigateTo
配合使用。navigateBack
可以返回到小程序的上一级页面或多级页面,但不能跨越非同一级的页面。(就是说从navigateBack
只能返回存在栈
中的页面。比如:A页面
跳转到B页面
再从B页面
跳转到C页面
,再从C页面
跳转到D页面
,此时页面栈
中的情况是:[A,B,C,D]
,你可以从D页面
直接返回返回到A页面
或者是按照跳转的顺序依次返回,但是绝不能返回E页面
,因为E页面
不存在栈
中!)wx.navigateBack({
delta: 1,
success: function(res) {
// success
},
fail: function() {
// fail
},
complete: function() {
// complete
}
})
其中,delta
表示返回的页面数(你想返回几级页面delta
就写几,但是页面栈
中有几个页面要做到心中有数,不然就会出现IndexOutOfBoundsException
异常),success
、fail
和complete
是回调函数,分别在成功、失败和完成时执行。
eventChannel.emit
方法向上级页面传递参数:wx.navigateBack({
delta: 1,
success: function(res) {
// success
res.eventChannel.emit('dataFromOpenedPage', { data: 'apple' });
}
})
接收参数:
Page({
onLoad: function() {
var eventChannel = this.getOpenerEventChannel()
eventChannel.on('dataFromOpenedPage', function(data) {
console.log(data)
})
}
})
wx.navigateTo
传参方式wx.navigateBack
常与’wx.navigateTo’连用用于返回上级或者多级页面。