Explorar o código

add use-static-swr

Yuki Takei %!s(int64=4) %!d(string=hai) anos
pai
achega
0b35cd25b8
Modificáronse 1 ficheiros con 25 adicións e 0 borrados
  1. 25 0
      packages/app/src/stores/use-static-swr.tsx

+ 25 - 0
packages/app/src/stores/use-static-swr.tsx

@@ -0,0 +1,25 @@
+import useSWR, {
+  Key, SWRConfiguration, SWRResponse, mutate,
+} from 'swr';
+import { Fetcher } from 'swr/dist/types';
+
+
+export function useStaticSWR<Data, Error>(key: Key): SWRResponse<Data, Error>;
+export function useStaticSWR<Data, Error>(key: Key, data: Data | Fetcher<Data> | null): SWRResponse<Data, Error>;
+export function useStaticSWR<Data, Error>(key: Key, data: Data | Fetcher<Data> | null,
+  configuration: SWRConfiguration<Data, Error> | undefined): SWRResponse<Data, Error>;
+
+export function useStaticSWR<Data, Error>(
+    ...args: readonly [Key]
+    | readonly [Key, Data | Fetcher<Data> | null]
+    | readonly [Key, Data | Fetcher<Data> | null, SWRConfiguration<Data, Error> | undefined]
+): SWRResponse<Data, Error> {
+  const [key, fetcher, configuration] = args;
+
+  const fetcherFixed = fetcher || configuration?.fetcher;
+  if (fetcherFixed != null) {
+    mutate(key, fetcherFixed);
+  }
+
+  return useSWR(key, null, configuration);
+}