收藏
回答

谈一谈隐藏路由回调API wx.onAppRoute

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 需求 wx.onAppRoute 客户端 7.0 2.7.0

打印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 个回答

  • 鸿博
    鸿博
    01-13

    感谢~

    01-13
    有用
    回复
  • George (乔治)
    George (乔治)
    2019-05-27

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

    2019-05-27
    有用
    回复 1
    • 彭刚
      彭刚
      2019-05-27

      要有像angular router guide的东西就好,刚开始摸小程序,感觉好多东西没有,难搞得很

      2019-05-27
      回复
  • 彭刚
    彭刚
    2019-05-27

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

    2019-05-27
    有用
    回复
  • 小师叔
    小师叔
    2019-05-27

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

    2019-05-27
    有用
    回复 2
    • 小易
      小易
      2019-11-19
      可否详细解答一下?
      2019-11-19
      回复
    • 小师叔
      小师叔
      2019-11-19回复小易
      额,有时间我写个经验分享吧,其实写也比较简洁,主要是配合业务做一些路由状态的判断再跳转
      2019-11-19
      回复
登录 后发表内容