react-app-shell
Version:
react打包脚本和example, 这里的版本请忽略
45 lines (37 loc) • 1.35 kB
JavaScript
import React, {Component} from 'react';
import {authService} from '../../service';
import {localStore} from '../../utils';
import {appConfig} from '../../config';
/**
* 检查统一登录
* 原理是: 通过wechatToken, 解析unionId, 来统一小程序端和H5端的登录状态
* @returns {function(*): InnerComponent}
*/
export default function checkUnifyLogin() {
return (WrappedComponent) => {
class InnerComponent extends Component {
constructor(props) {
super(props);
this.checkWechatToken();
}
checkWechatToken = async () => {
// 本地开发环境 不处理
if (appConfig.env === 'development') return;
const wechatToken = localStore.getWechatToken();
// 没有wechatToken 不处理
if (!wechatToken) return;
const isLogin = await authService.checkLogin();
if (!isLogin) {
localStore.clearToken();
}
console.log(`checkWechatToken >> 用户是否登录: ${isLogin ? '是' : '否'}`);
};
render() {
return (
<WrappedComponent {...this.props}/>
);
}
}
return InnerComponent;
};
}