微信小程序跳转的几种方式

2020-07-27  本文已影响0人  _皓月__
// router.js
module.exports = {
    // 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。
    // 使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。
    navigateTo(object) {
        if (getCurrentPages().length > 9) {
            this.redirectTo(object);
            // this.reLaunch(object)
        } else {
            wx.navigateTo(object);
        }
    },
    // 其他跳转不处理
    // 注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,而 redirectTo 方法则不会。
    // 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层。
    navigateBack(object) {
        wx.navigateBack(object);
        // wx.navigateBack({ delta: 2 });
    },
    // 跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
    switchTab(object) {
        wx.switchTab(object);
    },
    // 关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。
    redirectTo(object) {
        wx.redirectTo(object);
    },
    // 关闭所有页面,打开到应用内的某个页面
    reLaunch(object) {
        wx.reLaunch(object);
    }
};
// 不加入堆栈跳转
wx.redirectTo({
url:  '../../pages/address/address',
})
// 关闭所有页面,打开到应用内的某个页面
 wx.reLaunch({
 url: '../../pages/address/address',
 })
// 保留其他页面 跳转 带返回按钮
 wx.navigateTo({
 url: '../../pages/address/address',
 })

设置返回按钮:
有页面a 页面b 页面c c页面是保存页返回到b 但是上一页会保存为c 而不是a 这里在b页开始书写代码,

// 生命周期函数--监听页面加载
  onLoad: function(options) {
    var pages = getCurrentPages(); //  获取页面栈
    console.log(pages);
    var prevPage = pages[pages.length - 2]; // 上一个页面
    prevPage.setData({
      // 给上一个页面变量赋值
      isRouteMy: "2",
    });
  },
onShow: function() {
    // 获取当前路由判断是否要返回上一页(防止只有一个项目不能返回)
    if (this.data.isRouteMy == '2') {
       wx.switchTab({ 
         url: '../../pages/personal/personal', 
         success: function (e) { 
           var page = getCurrentPages().pop(); 
           if (page == undefined || page == null) return; page.onLoad(); 
           } 
        }) 
    }
上一篇 下一篇

猜你喜欢

热点阅读