UNPKG

@shopify/polaris

Version:

Shopify’s admin product component library

36 lines (27 loc) 1.4 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var React = require('react'); var isEqual = require('lodash/isEqual'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual); /** * Allows for custom or deep comparison of a dependency list. Useful to keep a consistent dependency * list across reference changes. * @param dependencies A dependency array similar to React's useEffect / useCallback / useMemo * @param comparator An optional function to compare dependencies that'll default to a deep comparison * @returns A dependency list * @see {@link https://github.com/Shopify/polaris-react/blob/main/src/utilities/use-deep-effect.tsx} * @see {@link https://github.com/Shopify/polaris-react/blob/main/src/utilities/use-deep-callback.tsx} * @example * function useDeepEffectExample(callback, dependencies, customCompare) { * useEffect(callback, useDeepCompareRef(dependencies, customCompare)); * } */ function useDeepCompareRef(dependencies, comparator = isEqual__default['default']) { const dependencyList = React.useRef(dependencies); if (!comparator(dependencyList.current, dependencies)) { dependencyList.current = dependencies; } return dependencyList.current; } exports.useDeepCompareRef = useDeepCompareRef;