UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

18 lines (17 loc) 700 B
import { isArrayEqual } from "../util/equal.js"; import { useInternals } from "./useInternals.js"; /** * Use a memoised class instance. * - Creates a new instance of `Constructor` using `args` * - Returns same instance for as long as `args` is equal to previous `args`. */ export function useInstance(Constructor, ...args) { const internals = useInternals(); // Update `internals` if `args` changes or `instance` is not set. if (!internals.args || !isArrayEqual(args, internals.args)) { internals.instance = new Constructor(...args); internals.args = args; } // biome-ignore lint/style/noNonNullAssertion: We know this is set. return internals.instance; }