收藏
回答

谈一谈隐藏路由回调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时立即触发,用来更好地做全局路由中间件?


回答关注问题邀请回答
收藏

6 个回答

  • _Error
    _Error
    2021-11-16

    如果是用 Taro 写小程序的,推荐用这个路由库:http://lblblib.gitee.io/tarojs-router-next/guide

    2021-11-16
    有用
    回复
  • GUXI
    GUXI
    2021-11-12

    可以做埋点 哈哈

    2021-11-12
    有用
    回复
  • 鸿博
    鸿博
    2020-01-13

    感谢~

    2020-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
    有用
    回复
  • Z
    Z
    2019-05-27

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

    2019-05-27
    有用
    回复 5
    • 小易
      小易
      2019-11-19
      可否详细解答一下?
      2019-11-19
      回复
    • Z
      Z
      2019-11-19回复小易
      额,有时间我写个经验分享吧,其实写也比较简洁,主要是配合业务做一些路由状态的判断再跳转
      2019-11-19
      回复
    • _Error
      _Error
      2021-11-16回复小易
      http://lblblib.gitee.io/tarojs-router-next/guide 可以试试这个库
      2021-11-16
      回复
    • 小易
      小易
      2021-12-07回复_Error
      emmm 不一定有用Taro框架
      2021-12-07
      回复
    • w
      w
      2022-03-25
      差点以为是我自己的回复
      2022-03-25
      回复
登录 后发表内容