51 lines
1.1 KiB
TypeScript
51 lines
1.1 KiB
TypeScript
import { defineStore } from "pinia";
|
|
import { ref, computed } from "vue";
|
|
|
|
interface user {
|
|
userId: number | string,
|
|
userName: string
|
|
}
|
|
|
|
const getUserInfo = () => {
|
|
return new Promise(resolve => {
|
|
setTimeout(() => {
|
|
const userinfo : user = {
|
|
userId: 123456789,
|
|
userName: "李白"
|
|
};
|
|
resolve({
|
|
errcode: 0,
|
|
errmsg: "",
|
|
data: userinfo
|
|
});
|
|
}, 2000);
|
|
});
|
|
};
|
|
|
|
const userInfoStore = defineStore("userInfoStore", () => {
|
|
const user = ref<user>();
|
|
const getUserRequest = () => {
|
|
return new Promise<user | undefined>((resolve, reject) => {
|
|
getUserInfo()
|
|
.then((res: any) => {
|
|
const { errcode, errmsg, data } = res;
|
|
if (errcode === 0) {
|
|
user.value = data;
|
|
resolve(user.value);
|
|
} else {
|
|
reject(errmsg);
|
|
}
|
|
})
|
|
.catch((err: any) => {
|
|
reject(err);
|
|
});
|
|
});
|
|
};
|
|
const info = computed(() => {
|
|
return user;
|
|
});
|
|
|
|
return { getUserRequest, info };
|
|
});
|
|
|
|
export default userInfoStore; |