shelving
Version:
Toolkit for using data in JavaScript.
16 lines (15 loc) • 499 B
JavaScript
import { useRef } from "react";
import { isArrayEqual } from "../util/equal.js";
import { getLazy } from "../util/lazy.js";
export function useLazy(value, ...args) {
const _internals = (useRef(undefined).current ??= {
value: getLazy(value, ...args),
args,
});
// Update `_internals` if `args` changes.
if (!isArrayEqual(args, _internals.args)) {
_internals.value = getLazy(value, ...args);
_internals.args = args;
}
return _internals.value;
}