【发布时间】:2019-09-25 11:44:24
【问题描述】:
使用useMemo(例如用于密集的函数调用)而不是使用useEffect 和useState 的组合有什么好处?
除了useMemo 在第一次渲染时返回值为null 之外,这里有两个自定义钩子乍一看完全一样:
useEffect & useState
import { expensiveCalculation } from "foo";
function useCalculate(someNumber: number): number {
const [result, setResult] = useState<number>(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的记忆在哪里踢?
【问题讨论】:
-
第一次渲染时第一个将是
null,而第二个不会? -
使用 useMemo 有什么好处(例如,用于密集的函数调用) - 是的。您正在使用专门为此目的设计的钩子。您列出的示例是 useMemo 在现实世界中最常见的示例。
标签: javascript reactjs typescript react-hooks