UNPKG

react-native-tree-multi-select

Version:

A super-fast, customizable tree view component for React Native with multi-selection, checkboxes, and search filtering capabilities.

40 lines (36 loc) 1.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useDeepCompareEffect; var _react = _interopRequireDefault(require("react")); var _fastIsEqual = require("fast-is-equal"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } /** * Deep compare effect hook. * Ensures the effect runs on the first render and whenever dependencies deeply change. * * @param effect The effect callback function. * @param deps The dependencies array to compare deeply. */ function useDeepCompareEffect(effect, deps) { // Ref to track if it's the first render const firstRenderRef = _react.default.useRef(true); // Memoized dependencies to avoid redundant `isEqual` checks const memoizedDependencies = _react.default.useMemo(() => deps, [deps]); // Ref to store the previous dependencies const dependenciesRef = _react.default.useRef(memoizedDependencies); // Check for dependency changes const dependenciesChanged = !(0, _fastIsEqual.fastIsEqual)(dependenciesRef.current, memoizedDependencies); if (dependenciesChanged) { dependenciesRef.current = memoizedDependencies; } _react.default.useEffect(() => { if (firstRenderRef.current) { firstRenderRef.current = false; } return effect(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [dependenciesChanged]); // exclude the effect function from the dependencies } //# sourceMappingURL=useDeepCompareEffect.js.map