useEffectDebugger.ts 797 B

12345678910111213141516171819202122232425262728293031323334
  1. import { useEffect } from "react";
  2. import { usePrevious } from "./usePrevious";
  3. export const useEffectDebugger = (
  4. effectHook: any,
  5. dependencies: any,
  6. dependencyNames: any = []
  7. ) => {
  8. const previousDeps = usePrevious(dependencies, []);
  9. const changedDeps = dependencies.reduce(
  10. (accum: any, dependency: any, index: any) => {
  11. if (dependency !== previousDeps[index]) {
  12. const keyName = dependencyNames[index] || index;
  13. return {
  14. ...accum,
  15. [keyName]: {
  16. before: previousDeps[index],
  17. after: dependency,
  18. },
  19. };
  20. }
  21. return accum;
  22. },
  23. {}
  24. );
  25. if (Object.keys(changedDeps).length) {
  26. // console.log("[use-effect-debugger] ", changedDeps);
  27. }
  28. useEffect(effectHook, dependencies);
  29. };