Quellcode durchsuchen

set fallbackData to useSidebarMode

Yuki Takei vor 2 Jahren
Ursprung
Commit
2d907ab092
1 geänderte Dateien mit 12 neuen und 7 gelöschten Zeilen
  1. 12 7
      apps/app/src/stores/ui.tsx

+ 12 - 7
apps/app/src/stores/ui.tsx

@@ -1,4 +1,6 @@
-import { type RefObject, useCallback, useEffect } from 'react';
+import {
+  type RefObject, useCallback, useEffect,
+} from 'react';
 
 import { PageGrant, type Nullable } from '@growi/core';
 import { type SWRResponseWithUtils, useSWRStatic } from '@growi/core/dist/swr';
@@ -279,15 +281,18 @@ export const useSidebarMode = (): SWRResponseWithUtils<DetectSidebarModeUtils, S
 
   const condition = isDrawerMode != null && isCollapsedModeUnderDockMode != null;
 
+  const fetcher = useCallback(([, isDrawerMode, isCollapsedModeUnderDockMode]: [Key, boolean|undefined, boolean|undefined]) => {
+    if (isDrawerMode) {
+      return SidebarMode.DRAWER;
+    }
+    return isCollapsedModeUnderDockMode ? SidebarMode.COLLAPSED : SidebarMode.DOCK;
+  }, []);
+
   const swrResponse = useSWRImmutable(
     condition ? ['sidebarMode', isDrawerMode, isCollapsedModeUnderDockMode] : null,
     // calcDrawerMode,
-    ([, isDrawerMode, isCollapsedModeUnderDockMode]) => {
-      if (isDrawerMode) {
-        return SidebarMode.DRAWER;
-      }
-      return isCollapsedModeUnderDockMode ? SidebarMode.COLLAPSED : SidebarMode.DOCK;
-    },
+    fetcher,
+    { fallbackData: fetcher(['sidebarMode', isDrawerMode, isCollapsedModeUnderDockMode]) },
   );
 
   const _isDrawerMode = useCallback(() => swrResponse.data === SidebarMode.DRAWER, [swrResponse.data]);