@pansy/react-mapbox-gl
Version:
🌍 基于 Mapbox GL 封装的 React 组件库
20 lines (19 loc) • 734 B
JavaScript
// src/hooks/useTrackedEffect.ts
import { useEffect, useRef } from "react";
var diffTwoDeps = (deps1, deps2) => {
return deps1 ? deps1.map((_ele, idx) => !Object.is(deps1[idx], deps2 == null ? void 0 : deps2[idx]) ? idx : -1).filter((ele) => ele >= 0) : deps2 ? deps2.map((_ele, idx) => idx) : [];
};
var useTrackedEffect = (effect, deps) => {
const previousDepsRef = useRef();
useEffect(() => {
const changes = diffTwoDeps(previousDepsRef.current, deps);
const previousDeps = previousDepsRef.current;
previousDepsRef.current = deps;
return effect(changes, previousDeps, deps);
}, deps);
};
var useTrackedEffect_default = useTrackedEffect;
export {
useTrackedEffect_default as default,
useTrackedEffect
};