UNPKG

@winglet/react-utils

Version:

React utility library providing custom hooks, higher-order components (HOCs), and utility functions to enhance React application development with improved reusability and functionality

33 lines (29 loc) 1.02 kB
'use strict'; var react = require('react'); var filter = require('@winglet/common-utils/filter'); var lib = require('@winglet/common-utils/lib'); var object = require('@winglet/common-utils/object'); const useSnapshotReference = (input, omit) => { const snapshotRef = react.useRef(input); const typeRef = react.useRef(lib.getTypeTag(input)); const omitRef = react.useRef(omit && (omit instanceof Set ? omit : new Set(omit))); return react.useMemo(() => { if ((typeRef.current === lib.getTypeTag(input) && isEmpty(input)) || object.equals(snapshotRef.current, input, omitRef.current)) return snapshotRef; snapshotRef.current = input; return snapshotRef; }, [input]); }; const isEmpty = (value) => { if (!value) return true; else if (filter.isObject(value)) { for (const _ in value) return false; return true; } else return false; }; exports.useSnapshotReference = useSnapshotReference;