微信小程序--路由拦截器.pdfVIP

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微信⼩程序--路由拦截器 背景 由于最近公司要求开发⼩程序,⼀直很感兴趣,也是趁着这次机会,边⽂档边开发,遇到⼀些好玩的东西,留此作为笔记 介绍 诸如 vue-router 的 beforeEach 那样的路由拦截器,但是拦截是肯定需要的,所以⾃⼰写了⼀个 代码 直接上代码 拦截器 const appGlobalData = getApp().globalData; /** * routerFillter --全局路由拦截器 * @function * @param{Object} pageObj 当前页⾯的page对象 * @param{Boolean} flag 是否开启权限判断 */ exports.routerFillter = function (pageObj, flag = false) { if (flag) { let _onShow = pageObj.onShow pageObj.onShow = function () { let that = this // 这⼀步是⾃⼰定义获取登录状态的,只是个判断权限的 appGlobalData.getSignPrms.then((res) => { // 改回this指针 res.status && _onShow.call(that) }, (err) => { // ⽤户未登录,重定向个⼈页 wx.switchTab({ url: '/pages/manage/manage' }) }) } } return Page(pageObj) } 使⽤ // ⼩程序 .js⽂件 // 官⽅写法 Page({ data: { } }) // 将Page替换 import { routerFillter } from '../../utils/routerFillter.js'; routerFillter({ // 内部⼀样 }, true) 其实原理很简单,就是在微信⼩程序注册页⾯接受⼀个初始化对象前拦截做些处理,我这⾥判断⽆权限时,更改原pageObj的 onShow⽣命周期函数, 改为重定向去登陆页,操作完再return 出微信⼩程序注册页⾯所需的Page({pageObj})就⾏,原理很简单,思路证实可⾏ 存在问题 问题是有的,就是因为我更改的是onShow⽣命周期,⽽⼩程序在触发onShow时,页⾯已经展⽰了,导致页⾯会先闪现⼀次页⾯,才会重定向到登陆 页, 也想过更改onLoad⽣命周期,但是也是有问题的,因为有些页⾯如果设置了缓存,会导致onLoad只触发⼀次,也就是说,只能拦截⼀次(很尴尬) 所以这篇⽂章即是分享⼀种⽅法,也是寻求⼀种解决⽅案

文档评论(0)

134****3224 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档