Kaynağa Gözat

fix: 修复页面刷新后请求项目id为-1的问题

通过在离开页面时将workspace信息存入localStorage并在刷新后从localStorage加载的方式保留currentProjectId值。
hkshu12 5 yıl önce
ebeveyn
işleme
adcb71bcaf
2 değiştirilmiş dosya ile 12 ekleme ve 2 silme
  1. 7 1
      src/App.vue
  2. 5 1
      src/store/modules/workspace.ts

+ 7 - 1
src/App.vue

@@ -8,7 +8,7 @@
 </template>
 
 <script lang="ts">
-import { defineComponent } from 'vue';
+import { defineComponent, onMounted } from 'vue';
 import Menu from '@/components/Menu.vue';
 
 import { getVariableFromQueryString } from '@/utils/qs';
@@ -27,6 +27,12 @@ export default defineComponent({
 
     UserDispatcher.updateUserInfo();
     WorkspaceDispatcher.refreshProjectList();
+
+    onMounted(() => {
+      window.onbeforeunload = () => {
+        localStorage.setItem('workspace', JSON.stringify(store.state.workspace));
+      };
+    });
   },
 });
 </script>

+ 5 - 1
src/store/modules/workspace.ts

@@ -18,6 +18,10 @@ const DEFAULT: WorkspaceState = {
   projectList: [],
 };
 
+const FROM_LOCAL_STORAGE = JSON.parse(localStorage.getItem('workspace') || '{}');
+
+const INIT = Object.keys(FROM_LOCAL_STORAGE).length > 0 ? FROM_LOCAL_STORAGE : DEFAULT;
+
 const actions: ActionTree<WorkspaceState, RootState> = {
   async refreshProjectList({ commit }) {
     const projectList = (await ProjectAPI.getProjectListByUserId()) || [];
@@ -74,7 +78,7 @@ const getters: GetterTree<WorkspaceState, RootState> = {
 };
 
 export const workspace: Module<WorkspaceState, RootState> = {
-  state: () => DEFAULT,
+  state: () => INIT,
   actions,
   mutations,
   getters,