请教大家一个问题,关于拦截的问题

发布于 2022-09-12 23:41:22 字数 140 浏览 33 评论 0

在做小程序的时候,想做一些拦截,比如用户没有登录。我想实现用户在做页面上面的任何事件或者点击tarbar,需要去登录,目前的做法是在每个点击动作或者路由跳转前加一个登录状态判断,在进行下一步的操作,感觉这种方法很笨。能不能实现全局的拦截,包括点击事件,页面跳转。求教

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

妥活 2022-09-19 23:41:22

请问你这是开发微信小程序吗?

紫﹏色ふ单纯 2022-09-19 23:41:22

一种是页面拦截器,原理是使用设计模式的装饰模式,简单来说把页面生命周期函数再进行封装,类型中间件。

另一种是请求拦截器,发送网络请求前判断是否存在token

御守 2022-09-19 23:41:22

写一个函数分发

class Controller {
  constructor(handlers, page) {
    this.handlers = handlers;
    this.proxyHandlers = {};
    this.page = page;
  }

  proxy() {
    Object.entries(this.handlers).forEach(([key, handler]) => {
      this.proxyHandlers[key] = this.before(handler);
      this.page[key] = this.proxyHandlers[key];
    });
  }

  judge() {}

  before(handler) {
    return (...args) => {
      if (!this.judge()) {
        handler.apply(this.page, ...args);
      }
    };
  }
}

对事件进行一层包裹,判断符合要求才执行判断
不同判断要求的可以自行加一个标识或者函数

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文