Files
schisandra-cloud-storage-fr…/src/store/modules/user.ts
2024-05-20 14:34:52 +08:00

46 lines
1.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/** @format */
import { action, makeAutoObservable } from "mobx";
import { makePersistable, isHydrated } from "mobx-persist-store";
import { handleLocalforage } from "@/utils/localforage";
export class useUserStore {
token: any = "";
constructor() {
makeAutoObservable(
this,
{
setToken: action,
},
{ autoBind: true },
);
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
makePersistable(this, {
// 在构造函数内使用 makePersistable
name: "token", // 保存的name用于在storage中的名称标识只要不和storage中其他名称重复就可以
properties: ["token"], // 要保存的字段这些字段会被保存在name对应的storage中注意不写在这里面的字段将不会被保存刷新页面也将丢失get字段例外。get数据会在数据返回后再自动计算
storage: handleLocalforage, // 保存的位置看自己的业务情况选择可以是localStoragesessionstorage
// 。。还有一些其他配置参数例如数据过期时间等等可以康康文档像storage这种字段可以配置在全局配置里详见文档
}).then(
action(() => {
// persist 完成的回调在这里可以执行一些拿到数据后需要执行的操作如果在页面上要判断是否完成persist使用 isHydrated
// console.log(persistStore)
}),
);
}
get getToken() {
return this.token ? this.token : null;
}
get isHydrated() {
return isHydrated(this);
}
setToken(token: string) {
this.token = token;
}
}