应用场景:需要请求的部分接口报错未登录,仔细看发现是有token的
问题分析:微信的文档有给出解决方案,在app.js利用callback的形式保存token和页面达到同步状态的方法,根据这个思路,我们可以配合request,在请求接口时发现没登录的话,进行自动登录之后再重新请求接口。
代码及实现:
const BASE_URL = process.env.BASE_URL;
const errorMsgDuration = 2000;
const errorMsgMask = true;
const platfrom = process.env.TARO_ENV;
let isLogin = false // 是否已经登录过
let getTokenCallback; // 获取token的回调
// 封装网络请求开始
const request = ({url, data={}, method,showLoading, showToast} = {}) => {
let _url
if(showLoading) {
// 添加请求加载等待
Taro.showLoading({
title: '加载中...',
mask: true
});
}
let token = store.getState().token || Taro.getStorageSync('token');
if(process.env.TARO_ENV !== 'h5') {
_url = BASE_URL + url;
}
if(!data.appcode) data.appcode = APP_CON