uni-app 拦截器uni.addInterceptor会拦截带参数的URL
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.navigateTo
、uni.redirectTo
、uni.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'
});