# useMemo
先举个例子:
import React, { useState, useMemo } from 'react';
export default function Demo() {
const [times, setTimes] = useState(1000);
const sum = useMemo(
function computeSum() {
let sum = 0;
for (let i = 0; i < times; i++) {
sum += i;
}
return sum;
},
[times]
);
return <div>{sum}</div>;
}
这是一个简单的求和 Demo,它的工作流程如下:
- 调用 setTimes 更新 times
- Demo 组件重新渲染
- 在渲染过程中,useMemo 会比较依赖项 times 是否改变,如果改变会重新走一遍 computeSum 计算 sum。如果依赖项 times 没有改变(与之前的值相等),则不会再 sum 的值。在例子中即省略了再次计算 1000 次的计算。
如果对比 VUE 的话,可以认为相当于 computed 的作用。