最佳答案
使用 useMemo
(例如对于密集的函数调用)而不是使用 useEffect
和 useState
的组合有什么好处吗?
这里有两个自定义的钩子,工作完全相同的第一眼,除了 useMemo
的返回值是 null
的第一次渲染:
import { expensiveCalculation } from "foo";
function useCalculate(someNumber: number): number | null {
const [result, setResult] = useState(null);
useEffect(() => {
setResult(expensiveCalculation(someNumber));
}, [someNumber]);
return result;
}
import { expensiveCalculation } from "foo";
function useCalculateWithMemo(someNumber: number): number {
return useMemo(() => {
return expensiveCalculation(someNumber);
}, [someNumber]);
};
每次他们的参数 someNumber
变化时,他们都会计算结果,那么 useMemo
的制表在哪里起作用呢?