@zedux/atoms
Version:
A Molecular State Engine for React
14 lines (13 loc) • 588 B
JavaScript
import { createInjector } from '../factories/createInjector.js';
import { haveDepsChanged, prefix } from '../utils/index.js';
export const injectMemo = createInjector('injectMemo', (instance, valueFactory, deps) => ({
type: `${prefix}/memo`,
deps,
result: valueFactory(),
}), (prevDescriptor, instance, valueFactory, deps) => {
const depsHaveChanged = haveDepsChanged(prevDescriptor.deps, deps);
const result = depsHaveChanged ? valueFactory() : prevDescriptor.result;
prevDescriptor.deps = deps;
prevDescriptor.result = result;
return prevDescriptor;
});