UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

17 lines (16 loc) 639 B
import { isArrayEqual } from "../util/equal.js"; import { useProps } from "./useProps.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 = useProps(); // Update `internals` if `args` changes or `instance` is not set. if (!internals.args || !internals.instance || !isArrayEqual(args, internals.args)) { internals.instance = new Constructor(...args); internals.args = args; } return internals.instance; }