feat: auth race condition & optimize ApolloFactory & too many pageview (#602)
This commit is contained in:
13
front/src/modules/utils/hooks/useFirstMountState.ts
Normal file
13
front/src/modules/utils/hooks/useFirstMountState.ts
Normal file
@ -0,0 +1,13 @@
|
||||
import { useRef } from 'react';
|
||||
|
||||
export function useFirstMountState(): boolean {
|
||||
const isFirst = useRef(true);
|
||||
|
||||
if (isFirst.current) {
|
||||
isFirst.current = false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return isFirst.current;
|
||||
}
|
||||
11
front/src/modules/utils/hooks/usePrevious.ts
Normal file
11
front/src/modules/utils/hooks/usePrevious.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import { useEffect, useRef } from 'react';
|
||||
|
||||
export default function usePrevious<T>(state: T): T | undefined {
|
||||
const ref = useRef<T>();
|
||||
|
||||
useEffect(() => {
|
||||
ref.current = state;
|
||||
});
|
||||
|
||||
return ref.current;
|
||||
}
|
||||
14
front/src/modules/utils/hooks/useUpdateEffect.ts
Normal file
14
front/src/modules/utils/hooks/useUpdateEffect.ts
Normal file
@ -0,0 +1,14 @@
|
||||
import { DependencyList, EffectCallback, useEffect } from 'react';
|
||||
|
||||
import { useFirstMountState } from './useFirstMountState';
|
||||
|
||||
export function useUpdateEffect(effect: EffectCallback, deps?: DependencyList) {
|
||||
const isFirst = useFirstMountState();
|
||||
|
||||
useEffect(() => {
|
||||
if (!isFirst) {
|
||||
return effect();
|
||||
}
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, deps);
|
||||
}
|
||||
Reference in New Issue
Block a user