useDeepCompareEffect

A modified useEffect hook that is using deep comparison on its dependencies instead of reference equality.

Usage

import { useDeepCompareEffect } from "@reactuses/core";
import { useEffect, useRef, useState } from "react";

const Demo = () => {
  const [count, setCount] = useState(0);
  const effectCountRef = useRef(0);
  const deepCompareCountRef = useRef(0);

  useEffect(() => {
    effectCountRef.current += 1;
  }, [{}]);

  useDeepCompareEffect(() => {
    deepCompareCountRef.current += 1;
    return () => {
      // do something
    };
  }, [{}]);

  return (
    <div>
      <p>effectCount: {effectCountRef.current}</p>
      <p>deepCompareCount: {deepCompareCountRef.current}</p>
      <p>
        <button type="button" onClick={() => setCount(c => c + 1)}>
          reRender
        </button>
      </p>
    </div>
  );
};

Example

effectCount: 0

deepCompareCount: 0

Type Declarations

export default function useDeepCompareEffect(
  effect: EffectCallback,
  deps: DependencyList
): void