@ozo/react-rock
Version:
React 移动端开发脚手架,基于CRA3,通用、开箱即用。
85 lines (69 loc) • 1.94 kB
JavaScript
/**
* 保存用户信息与登录信息token等其他公共信息
*/
import { observable, action, computed } from 'mobx';
// import { ApiUrls } from '@/api';
import { getQueryString } from '@/utils';
import Store from '@/stores/Store';
import { avatar } from '@/assets';
class UserStore extends Store {
// 全局token
token = '';
// 手机号 示例代码
mobile = '13888888888';
// 昵称 示例代码
nickName = '某某某';
// 头像 示例代码
imgUrl = avatar;
constructor(rootStore) {
super();
this.rootStore = rootStore;
// 数据持久化
this.persistParam('token', true, true); // 单个key
this.persistParam(['mobile', 'nickName', 'imgUrl']); // 多个key
// 从Url获得token参数
const tToken = getQueryString('token');
if (tToken) {
this.setToken(tToken);
}
Store.commonRequestData = { token: this.token };
Store.refreshToken = this.refreshToken.bind(this);
}
/**
* @description token 过期后自动刷新 token
* @param {String} url 调用刷新的接口
* @param {Object} params 调用刷新的接口的参数
* @param {String} type 请求类型
*/
refreshToken(url, params, type) {
this.setToken(undefined);
// 刷新token的逻辑
//...
}
setToken(token) {
this.token = token;
}
// 以下为示例代码
get userInfo() {
return {
mobile: this.mobile,
nickName: this.nickName,
img: this.imgUrl,
};
}
setMobile(mobile) {
this.mobile = mobile;
}
setNickName(name) {
this.nickName = name;
}
setAvatar(imgUrl) {
this.imgUrl = imgUrl;
}
}
export default UserStore;