微信小程序-路由跳转

当前测试的基础库版本为 2.17.0

页面分类

tabBar 页面 - app.json中配置的 tabBar 页面

page 页面 - 其他的 非tabBar 页面,后面称为 page 页面

页面栈
// 微信小程序提供页面栈,用来保存页面。
// 可以在页面中通过 getCurrentPages() 方法来获取页面栈的数据
// 开发者工具的控制台也可以直接使用该方法

// 页面栈最多十个页面,最后一个为当前页
// 页面栈最少一个页面,只有当前页
// 页面栈内按理说最多只会存在一个 tabBar 页面,并且只会在第一个位置中。
// 因为可以跳转到 tabBar 页面的方法,都会先把栈内的页面给清空
// 跳转到 page 页面不清空页面栈的数据的,前 tabBar 页面则会是栈内第一个页面
路由的方法

switchTab - 跳转到 tabBar 页面

// 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
wx.switchTab({
  url: '/pages/home/index',
  success: function(){ },
  fail: function(){ },
  complete: function(){ }
});
// url 添加参数,不会报错,但目标页面获取不到参数
// url 如果为 page 页面,则会直接报错
// 成功之后,页面栈中会清空所有的页面,只有当前 tabBar 页面

reLaunch - 打开应用中的某个页面,可以是 tabBar 页面,也可以是 page 页面

// 关闭所有页面,打开到应用内的某个页面
wx.reLaunch({
  url: '/pages/page1/index?id=123&type=type1',
  success: function(){ },
  fail: function(){ },
  complete: function(){ }
});
// url 添加参数,tabBar 和 page 目标页面都可以接收到
// 成功后,页面栈中只有当前页面

redirectTo - 跳转到 page 页面

// 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。
wx.redirectTo({
  url: '/pages/page1/index?id=123&type=type1',
  success: function(){ },
  fail: function(){ },
  complete: function(){ }
});
// url 不能为 tabBar 页面,否则直接报错
// 成功后,前页面会被关闭,页面栈中不会保留前页面,即是当前页面替换了前页面

navigateTo - 跳转到 page 页面

// 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。
wx.navigateTo({
  url: '/pages/page1/index?id=123&type=type1',
  events: {
    // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
    oneEvent: function(params){
      console.log(params);
    }
  },
  success: function(res){
    // 通过eventChannel向被打开页面传送数据
    res.eventChannel.emit('event-name', { param1: 'value1' })
  },
  fail: function(){ },
  complete: function(){ }
});
// url 不能为 tabBar 页面,否则直接报错
// 成功后,前页面会保留在页面栈内。
// 如果页面栈数据已经为十个,则该方法不会起作用

navigateBack - 返回页面栈内的某个页面,默认返回上一个

// 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层。
wx.navigateBack({
  delta: 1,
  success: function(){ },
  fail: function(){ },
  complete: function(){ }
});
// delta 从页面栈取出几个页面,则栈内剩余的最后一个为目标页面
// delta 如果delta设置的超过了页面栈的最大数,则会返回栈内的第一个页面
// 返回页面之后,不会重新执行页面的初始化方法

目标页面获取url参数

// test
Page({
  onLoad (option) {
    console.log('query', options); // { id: 123, type: "type1" }
  }
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值