Browse Source

fix: 限制当前点击保存配置

xyh 2 years ago
parent
commit
a86e529618

+ 5 - 4
packages/app/src/components/table-tools/hooks.ts

@@ -10,6 +10,9 @@ import {useLocation} from 'react-router-dom';
 import {useStore} from 'zustand';
 
 export function useSaveSetting(settingId?: string) {
+  const {pathname} = useLocation();
+  const selfKey = settingId ?? pathname;
+
   const {isLoading, mutate} = useMutation({
     mutationFn: addSetting,
     onSuccess({msg}) {
@@ -20,10 +23,9 @@ export function useSaveSetting(settingId?: string) {
   });
 
   function onSaveClick() {
-    eventBus.emit(SAVE_SETTING_EVENT);
+    eventBus.emit(SAVE_SETTING_EVENT, selfKey);
   }
 
-  const {pathname} = useLocation();
   const {id} = useStore(userStore);
   useEffect(
     function () {
@@ -33,7 +35,6 @@ export function useSaveSetting(settingId?: string) {
           'userId' | 'track' | 'conditions'
         >,
       ) {
-        const selfKey = settingId ?? pathname;
         if (val.key !== selfKey) return;
 
         const db = await openFilterDB();
@@ -55,7 +56,7 @@ export function useSaveSetting(settingId?: string) {
         eventBus.removeListener(RECEIVE_SETTING_EVENT, listener);
       };
     },
-    [id, mutate, pathname, settingId],
+    [id, mutate, pathname, selfKey, settingId],
   );
 
   return [isLoading, onSaveClick] as const;

+ 5 - 2
packages/app/src/components/table/hooks.ts

@@ -134,7 +134,10 @@ export function useTable<T extends Record<string, any>>(
   const {pathname} = useLocation();
   useEffect(
     function () {
-      function listener() {
+      function listener(val: string) {
+        const key = options.preloadKey ?? pathname;
+        if (val !== key) return;
+
         const params: Omit<
           AddSettingsParams & {key: string},
           'userId' | 'track' | 'conditions'
@@ -142,7 +145,7 @@ export function useTable<T extends Record<string, any>>(
           tableOrder: JSON.stringify(columnOrder),
           tableWidth: JSON.stringify(columnSizing),
           pageLimit: String(options.pageSize),
-          key: options.preloadKey ?? pathname,
+          key,
         };
 
         eventBus.emit(RECEIVE_SETTING_EVENT, params);