evt
Version:
Type safe replacement for node's EventEmitter
21 lines (16 loc) • 494 B
text/typescript
import * as React from "react";
const { useRef } = React;
export function useGuaranteedMemo<T>(fn: () => T, deps: readonly any[]): T {
const ref = useRef<{ v: T; prevDeps: any[]; }>()
if (
!ref.current ||
deps.length !== ref.current.prevDeps.length ||
ref.current.prevDeps.map((v, i) => v === deps[i]).indexOf(false) >= 0
) {
ref.current = {
"v": fn(),
"prevDeps": [...deps]
};
}
return ref.current.v;
}