D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
usr
/
share
/
grafana
/
public
/
app
/
core
/
hooks
/
Filename :
useCleanup.ts
back
Copy
import { useEffect, useRef } from 'react'; import { useDispatch } from 'app/types'; import { cleanUpAction, CleanUpAction } from '../actions/cleanUp'; export function useCleanup(cleanupAction: CleanUpAction) { const dispatch = useDispatch(); //bit of a hack to unburden user from having to wrap stateSelcetor in a useCallback. Otherwise cleanup would happen on every render const selectorRef = useRef(cleanupAction); selectorRef.current = cleanupAction; useEffect(() => { return () => { dispatch(cleanUpAction({ cleanupAction: selectorRef.current })); }; }, [dispatch]); }