小程序的页面路由(页面切换时onShow和onLoad的调用)

首先我们了解一下路由的触发方式

  •  wx.navigateTo  

       保留当前页面,跳转到应用内的某个页面,但是不能跳到 tabbar 页面。使用wx.navigateBack 以返回到原页面。小程序中页面栈最多十层。

wx.navigateTo({
  url: 'test?id=1',
  success: function(res) {
    //接口调用成功的回调函数
  }
})
  • wx.redirectTo

        关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。

wx.redirectTo({
  url: 'test?id=1'
})
  • wx.navigateBack

        关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层。

        getCurrentPages()

        获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。

                注意事项

                        不要尝试修改页面栈,会导致路由以及页面状态错误。

                        不要在 App.onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。

wx.navigateBack({
          delta: 1,
          success: function (e) {
            var page = getCurrentPages().pop();
            if (page == undefined || page == null) return;
            page.onLoad(page.options);
          }
        })

对于不同的路由的触发方式触发不同的页面生命周期函数

打开新页面 调用 API wx.navigateTo
使用组件 <navigator open-type="navigateTo"/>
onHide onLoad, onShow
页面重定向 调用 API wx.redirectTo
使用组件 <navigator open-type="redirectTo"/>
onUnload onLoad, onShow
页面返回 调用 API wx.navigateBack
使用组件<navigator open-type="navigateBack">
用户按左上角返回按钮
onUnload onShow

总结

  • navigateToredirectTo 只能打开非 tabBar 页面。
  • 使用 navigateBack 只跳转回页面以后,只能触发onShow生命周期。
  • 调用页面路由带的参数可以在目标页面的onLoad中获取。

猜你喜欢

转载自blog.csdn.net/peachban/article/details/133694120
今日推荐