将文件引到 [ src/main.ts ] 中,即可

常见应用场景如:未登录、权限不足、埋点等 …

  1. import Taro from "@tarojs/taro";
  2. // import store from "../store";
  3. const whiteUrlList = ["/pages/login/index"]; // 存放步需要拦截的路由地址
  4. const routerHandle = {
  5. apply(target, object, args) {
  6. let url;
  7. if (args && args[0]) {
  8. url = args[0].url;
  9. }
  10. if (!whiteUrlList.includes(url)) {
  11. // 可以用于判断未登录步能访问,或者没权限步能访问,自己发挥
  12. }
  13. return target(...args);
  14. }
  15. };
  16. Taro.switchTab = new Proxy(Taro.switchTab, routerHandle);
  17. Taro.reLaunch = new Proxy(Taro.reLaunch, routerHandle);
  18. Taro.redirectTo = new Proxy(Taro.redirectTo, routerHandle);
  19. Taro.navigateTo = new Proxy(Taro.navigateTo, routerHandle);
  20. Taro.navigateBack = new Proxy(Taro.navigateBack, routerHandle);

防止存在的页面过多导致卡死。

  1. const navigateTo = Taro.navigateTo
  2. Taro.navigateTo = (data) => {
  3. if (Taro.getCurrentPages().length > 8) {
  4. return Taro.redirectTo(data) // 大于8次后强制销毁其他页面并重定向
  5. }
  6. return navigateTo(data)
  7. }