Files
powerpoint-toolbox/node_modules/use-disposable/src/useStrictEffect.ts
T
2025-03-07 19:22:02 +01:00

24 lines
587 B
TypeScript

import * as React from "react";
import { getCurrentOwner } from "./useIsStrictMode";
// we know strict mode will render useMemo facory twice
// keep a weak set to detect when the second render happens
const effectSet = new WeakSet();
export function useStrictEffect(
effect: () => () => void,
deps: React.DependencyList | undefined,
) {
const currentOwner = getCurrentOwner();
React.useEffect(() => {
if (!effectSet.has(currentOwner)) {
effectSet.add(currentOwner);
effect();
return;
}
const dispose = effect();
return dispose;
}, deps);
}