微信小程序页面路由

原文地址:页面路由

说明

在小程序中所有页面的路由全部由框架进行管理,当路由发生时,会通过页面生命周期方法通知到页面。

在框架管理路由时,一个重要概念为页面栈。

框架以栈的形式维护了当前的所有页面。当发生路由切换的时候,页面栈的表现如下:

路由方式页面栈表现
初始化新页面入栈
打开新页面新页面入栈
页面重定向当前页面出栈,新页面入栈
页面返回页面不断出栈,直到目标返回页,新页面入栈
Tab 切换页面全部出栈,只留下新的 Tab 页面
重加载页面全部出栈,只留下新的页面

通过getCurrentPages() 函数可以获取当前页面栈的实例,其以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面(注意:不要尝试修改页面栈,会导致路由以及页面状态错误)。

路由的触发方式以及页面生命周期函数如下:

路由方式触发时机路由前页面路由后页面
初始化小程序打开的第一个页面onLoad, onShow
打开新页面调用 API wx.navigateTo 或使用组件 onHideonLoad, onShow
页面重定向调用 API wx.redirectTo 或使用组件 onUnloadonLoad, onShow
页面返回调用 API wx.navigateBack 或使用组件或用户按左上角返回按钮onUnloadonShow
Tab 切换调用 API wx.switchTab 或使用组件 或用户切换 Tab各种情况请参考下表
重启动调用 API wx.reLaunch 或使用组件 onUnloadonLoad, onShow

Tab 切换对应的生命周期(以 A、B 页面为 Tabbar 页面,C 是从 A 页面打开的页面,D 页面是从 C 页面打开的页面为例):

当前页面路由后页面触发的生命周期(按顺序)
AANothing happend
ABA.onHide(), B.onLoad(), B.onShow()
AB(再次打开)A.onHide(), B.onShow()
CAC.onUnload(), A.onShow()
CBC.onUnload(), B.onLoad(), B.onShow()
DBD.onUnload(), C.onUnload(), B.onLoad(), B.onShow()
D(从转发进入)AD.onUnload(), A.onLoad(), A.onShow()
D(从转发进入)BD.onUnload(), B.onLoad(), B.onShow()

Tips:

  • navigateTo, redirectTo 只能打开非 tabBar 页面。
  • switchTab 只能打开 tabBar 页面。
  • reLaunch 可以打开任意页面。
  • 页面底部的 tabBar 由页面决定,即只要是定义为 tabBar 的页面,底部都有 tabBar。
  • 调用页面路由带的参数可以在目标页面的onLoad中获取。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序可以通过使用`getCurrentPages()`方法来获取当前页面栈的信息,包括路由信息。具体的代码如下所示: ```javascript const pages = getCurrentPages(); const currentPage = pages\[pages.length - 1\]; const route = currentPage.route; const options = currentPage.options; console.log("当前页面路由:", route); console.log("当前页面参数:", options); ``` 在上述代码中,`getCurrentPages()`方法返回一个页面栈数组,其中最后一个元素即为当前页面。通过获取当前页面的`route`属性,可以获取当前页面路由信息。通过获取当前页面的`options`属性,可以获取当前页面的参数信息。 引用\[1\]中的代码片段似乎是使用了自定义的方法`getUrlParams`来获取URL参数,这与微信小程序路由信息获取方法不太一样。如果你想要获取微信小程序路由信息,可以使用上述提供的代码片段。 #### 引用[.reference_title] - *1* [获取微信小程序路由参数](https://blog.csdn.net/qq_24147051/article/details/127301241)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [微信小程序路由参数的传递与获取](https://blog.csdn.net/qq_43350941/article/details/126469446)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值