mirror of
https://github.com/nextui-org/nextui.git
synced 2025-12-08 19:26:11 +00:00
* refactor: migrate eslint to v9 * chore: lint * chore: update eslint command * chore: fix lint warnings * chore: separate lint and lint:fix * chore: exclude contentlayer generated code * fix(scripts): add missing await
29 lines
637 B
TypeScript
29 lines
637 B
TypeScript
import {useEffect, useRef} from "react";
|
|
|
|
/**
|
|
* React effect hook that invokes only on update.
|
|
* It doesn't invoke on mount
|
|
*/
|
|
export const useUpdateEffect: typeof useEffect = (effect, deps) => {
|
|
const renderCycleRef = useRef(false);
|
|
const effectCycleRef = useRef(false);
|
|
|
|
useEffect(() => {
|
|
const isMounted = renderCycleRef.current;
|
|
const shouldRun = isMounted && effectCycleRef.current;
|
|
|
|
if (shouldRun) {
|
|
return effect();
|
|
}
|
|
effectCycleRef.current = true;
|
|
}, deps);
|
|
|
|
useEffect(() => {
|
|
renderCycleRef.current = true;
|
|
|
|
return () => {
|
|
renderCycleRef.current = false;
|
|
};
|
|
}, []);
|
|
};
|