张成从小就帅
张成从小就帅
  • 发布:2020-11-16 11:43
  • 更新:2020-11-17 18:04
  • 阅读:2902

uni-app有没有类似vue路由守卫的功能

分类:uni-app

我希望能拦截到路由跳转,以此来做一些登录的验证,就像vue的前置守卫。

如果没有守卫的话,有没有比较成熟的替代方案。

2020-11-16 11:43 负责人:无 分享
已邀请:
DCloud_uniCloud_JSON

DCloud_uniCloud_JSON

建议方案:嵌套方法封装ajax方法,根据响应体来判断是否需要执行跳转到登录页面的逻辑,另外这样做可以:根据响应体更新本地token,请求体统一规范。设计好ajax_before和ajax_after。

function ajax(_url,_data,callback){  
      var url = 'https://xxx.com/api/'+_url;  
	  uni.request({  
			url: url,  
			dataType:'json',  
			data:_data,  
			header: {  
				"user_id" : uni.getStorageSync('user_id'),  
				"token"   : uni.getStorageSync('token'),  
				"content-type":'application/x-www-form-urlencoded',  
			},  
			success: (e) => {  
				const res = e.data;				  
				switch (e.statusCode){  
					case 2000:  
						callback(res.data);  
						break;  
					case 4001:  
						uni.navigateTo({  
							url:'/pages/common/login/login',  
							complete(e){  
								console.log(e);  
							}  
						})  
						break;  
					case 2001:  
						//其他逻辑。。。。  
						break;  
						...//更多逻辑,如系统维护中、该接口已经废弃请更新app,然后跳转到更新app页面等  
						//注意switch case等方式比用if性能更好。  
					default:  
						break;  
				}  
			}  
		})  
	}

该问题目前已经被锁定, 无法添加新回复