【发布时间】:2021-09-04 20:37:34
【问题描述】:
useCallbackRef是use-callback-ref包提供的钩子
当依赖数组中有useCallbackRef结果的.current时,为什么useEffect会触发两次?
import { useCallback, useEffect, useRef, useState } from "react";
import { useCallbackRef } from "use-callback-ref";
function App() {
const [useCbRefCounter, setUseCbRefCounter] = useState(0);
const [useCbRefEffectCounter, setUseCbRefEffectCounter] = useState(0);
const divCbRef = useCallbackRef(null, () =>
// This is called once
setUseCbRefCounter((counter) => counter + 1)
);
useEffect(() => {
if(!divCbRef.current) {
return;
}
// This is called twice
setUseCbRefEffectCounter((counter) => counter + 1);
}, [divCbRef.current]);
// ...
}
(useEffect 不会像人们想象的那样被 null 触发)
Sandbox Demo与ref变化时的调用次数比较
【问题讨论】:
标签: reactjs react-hooks