import { withPointer } from './hook-engine.mjs'; | |
export function useMemo(fn, dependencies) { | |
return withPointer((pointer) => { | |
const prev = pointer.get(); | |
if (!prev || | |
prev.dependencies.length !== dependencies.length || | |
prev.dependencies.some((dep, i) => dep !== dependencies[i])) { | |
const value = fn(); | |
pointer.set({ value, dependencies }); | |
return value; | |
} | |
return prev.value; | |
}); | |
} | |