uni-app 拦截器uni.addInterceptor会拦截带参数的URL

发布于 1周前 作者 eggper 来自 Uni-App

uni-app 拦截器uni.addInterceptor会拦截带参数的URL

开发环境 版本号 项目创建方式
Windows window11 HBuilderX

拦截器uni.addInterceptor会拦截带参数的URL 。
在白名单设置了通行:/page/index/detail ,如果在跳转在URL中有参数,如/page/index/detail?id=12,则会被拦截器拦截。
不过可加一行代码即可解决这个问题:

if(!hasPermission(e.url)){  

修改为:

const url = e.url.split('?')[0]  
if(!hasPermission(url)){  

1 回复

在 uni-app 中,uni.addInterceptor 是一个用于拦截和处理特定 API 调用的方法。它可以拦截诸如 uni.navigateTouni.redirectTouni.switchTab 等页面跳转相关的 API 调用。拦截器可以用于在跳转前进行一些自定义处理,比如权限检查、参数处理等。

拦截带参数的 URL

uni.addInterceptor 可以拦截带参数的 URL。当你在跳转时传递了参数,拦截器可以获取到这些参数并进行处理。

示例代码

以下是一个使用 uni.addInterceptor 拦截带参数的 URL 的示例:

// 添加拦截器
uni.addInterceptor('navigateTo', {
  // 跳转前拦截
  invoke(args) {
    // args 包含跳转的参数
    console.log('拦截到的 URL:', args.url);
    console.log('拦截到的参数:', args);

    // 你可以在这里对参数进行处理
    // 例如,检查是否有某个特定的参数
    if (args.url.includes('someSpecificParam')) {
      // 做一些处理
      console.log('检测到特定参数,进行特殊处理');
    }

    // 如果你想阻止跳转,可以返回 false
    // return false;

    // 如果你想修改跳转的 URL 或参数,可以修改 args.url 或 args
    // args.url = '新的URL';
  },
  // 跳转成功回调
  success(res) {
    console.log('跳转成功:', res);
  },
  // 跳转失败回调
  fail(err) {
    console.log('跳转失败:', err);
  },
  // 跳转完成回调(无论成功或失败)
  complete(res) {
    console.log('跳转完成:', res);
  }
});

// 示例跳转
uni.navigateTo({
  url: '/pages/detail/detail?id=123&name=test'
});
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!