跳至主要内容

useDeepCompareEffect

修改後的 useEffect ,對其依賴項使用深度比較而不是引用相等

Usage

即時編輯器

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

  useEffect(() => {
    effectCountRef.current += 1;
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [{}]);

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

  return (
    <div>
      <p>effect計數:{effectCountRef.current}</p>
      <p>深度比較計數:{deepCompareCountRef.current}</p>
      <p>
        <button type="button" onClick={() => setCount(c => c + 1)}>
          重新渲染
        </button>
      </p>
    </div>
  );
};

結果

effect計數:0

深度比較計數:0

API

useDeepCompareEffect

Returns

void

Arguments

參數名描述類型預設值
effect副作用函数React.EffectCallback (必填)-
deps依赖列表React.DependencyList (必填)-
ads via Carbon