mirror of
https://github.com/grafana/grafana.git
synced 2024-11-30 12:44:10 -06:00
3c6e0e8ef8
* Add and configure eslint-plugin-import * Fix the lint:ts npm command * Autofix + prettier all the files * Manually fix remaining files * Move jquery code in jest-setup to external file to safely reorder imports * Resolve issue caused by circular dependencies within Prometheus * Update .betterer.results * Fix missing // @ts-ignore * ignore iconBundle.ts * Fix missing // @ts-ignore
17 lines
609 B
TypeScript
17 lines
609 B
TypeScript
import { useEffect, useRef } from 'react';
|
|
import { useDispatch } from 'react-redux';
|
|
|
|
import { cleanUpAction, StateSelector } from '../actions/cleanUp';
|
|
|
|
export function useCleanup<T>(stateSelector: StateSelector<T>) {
|
|
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(stateSelector);
|
|
selectorRef.current = stateSelector;
|
|
useEffect(() => {
|
|
return () => {
|
|
dispatch(cleanUpAction({ stateSelector: selectorRef.current }));
|
|
};
|
|
}, [dispatch]);
|
|
}
|