谈一谈隐藏路由回调API wx.onAppRoute
发布于 6 年前 作者 kjin 15438 次浏览 来自 问答

打印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时立即触发,用来更好地做全局路由中间件?

4 回复

如何写中间件? 能不能给个例子?

因该是指包一下wx.navigateTo / wx.redirectTo / wx.switchTab。这样可以做。放globalData或者store里面也可以避免每个页面import。只是麻烦

现在也是可以写中间件的,在跳转之前判断

回到顶部