Răsfoiți Sursa

update: store初始化逻辑调整

chenhao 3 ani în urmă
părinte
comite
6801017d09
2 a modificat fișierele cu 13 adăugiri și 8 ștergeri
  1. 8 3
      src/main.ts
  2. 5 5
      src/store/store.ts

+ 8 - 3
src/main.ts

@@ -8,6 +8,7 @@ if (!validUA) {
 import "./styles/global.css";
 import { createApp } from "vue";
 import { createPinia } from "pinia";
+import { initMarkStore } from "@/store/store";
 import App from "./App.vue";
 import router from "@/router";
 import filters from "@/filters";
@@ -30,6 +31,12 @@ app.config.globalProperties.$filters = filters;
 app.component("QmButton", QmButton);
 app.component("QmDialog", QmDialog);
 
+/**
+ * @description pinia限制,初始化Store, 必须在use pinia插件实例之后。所以在此执行初始化, 此方法调用之后, Store初始化完成
+ * @notice 在初始化完成之前,store为null , 请勿在初始化完成之前,直接使用store的方法或属性
+ */
+initMarkStore();
+
 if (import.meta.env.DEV) {
   await import("./devLogin")
     .then((m) => {
@@ -39,7 +46,5 @@ if (import.meta.env.DEV) {
       app.mount("#app");
     });
 } else {
-  setTimeout(() => {
-    app.mount("#app");
-  }, 0);
+  app.mount("#app");
 }

+ 5 - 5
src/store/store.ts

@@ -2,7 +2,7 @@ import { Setting, MarkStore, AdminPageSetting, Task } from "@/types";
 import { watch } from "vue";
 import { defineStore } from "pinia";
 
-const initStore: MarkStore = {
+const initState: MarkStore = {
   setting: {
     mode: "TRACK",
     examType: "SCAN_IMAGE",
@@ -58,9 +58,9 @@ const initStore: MarkStore = {
   globalMask: false,
 };
 
-export const useMarkStore = defineStore("mark", {
+const useMarkStore = defineStore("mark", {
   state: () => {
-    return initStore;
+    return initState;
   },
   getters: {
     /** 获得statusValue的中文名 */
@@ -152,7 +152,7 @@ export const useMarkStore = defineStore("mark", {
 
 export let store = null as unknown as ReturnType<typeof useMarkStore>;
 
-setTimeout(() => {
+export const initMarkStore = () => {
   store = useMarkStore();
 
   watch(
@@ -222,4 +222,4 @@ setTimeout(() => {
   );
 
   // scoreList 被 trackList 和用户手动更新
-}, 0);
+};