如果是用 Taro 写小程序的,推荐用这个路由库:http://lblblib.gitee.io/tarojs-router-next/guide
谈一谈隐藏路由回调API wx.onAppRoute打印wx对象的时候发现了原来小程序有一个全局路由回调api。试了一下觉得不错,真机上也可以用。 原来觉得可以用来做一个全局路由中间件(像vue router一样),如: [代码]// app.js[代码] [代码]import store from 'store'[代码] [代码] [代码] [代码]onLaunch () {[代码] [代码] wx.onAppRoute((route) => {[代码] [代码] [代码][代码]const protectedRoutes = [[代码][代码] [代码][代码]'pages/protected/1'[代码][代码],[代码][代码] [代码][代码]'pages/protected/2'[代码][代码],[代码][代码] [代码][代码]'pages/protected/3'[代码][代码] [代码][代码]][代码][代码] [代码][代码]if[代码] [代码](!store.userLoggedIn() && protectedRoutes.find(r => route.path.includes(r))) {[代码][代码] [代码][代码]wx.redirectTo({[代码][代码] [代码][代码]url: [代码][代码]'/pages/register/register'[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] })[代码] [代码]}[代码] 但是,经测试发现这个回调触发太慢了,不适合用于授权页面。页面切换后大概有半秒可以看新页面的内容。 还是得在各处添加登录状态代码。 官方可不可以提供一个wx.beforeAppRoute回调,navigate / switchtap / redirect时立即触发,用来更好地做全局路由中间件?
2021-11-16你们需要这个:http://lblblib.gitee.io/tarojs-router-next/guide/quike/sync-router
wx.navigateBack 是否可以增加对自定义传参的支持?wx.navigateBack 目前只能控制返回几层,因为小程序最大支持打开10级页面,实际有类似以下场景(目前全部使用 navigateTo 打开): 用户A主页 -> 评价详情1 -> (点击头像进入)用户A主页 -> 评价详情2 …… 如果能支持 navigateBack 传递自定义参数,就不用一直新开页面,可以自行判断使用返回方法,在 onLoad 或 onShow 生命周期获取新的参数,这将会大大提升小程序页面跳转的体验。理论上体验可以做到和APP一样支持打开无限层级页面,又不会因为打开太多页面导致内存暴增。希望官方评估考虑。 ---------------------- 突然发现有不少人关心这个问题,我就挖坟补充一下: 我们自己实现了近似小程序页面生命周期的方法,从在跳转动作执行时,先从页面栈中找到目标页面,执行这个方法并传递参数,然后再 back 相对应的层级,用法和 onShow 等等一样 onNavigateBack(options) { } 因为我们的小程序是有一层自己封装的路由,所以这个事情在统一路由层面就完成了,业务开发者不用去关心怎么实现的,还是很通用的。
2021-08-24