Use Memo
计算量大的方法
const [text, setText] = useState("");
const [number, setNumber] = useState(0);
const expensiveFunction = (n) => {
console.log("方法开始!");
let total = 0;
for (let i = 1; i <= n; i++) {
total += i;
}
return total;
};
// 依赖number
const sum = useMemo(() => expensiveFunction(number), [number]);
console.log("组件渲染!");
// 结果 方法开始!-》 组件渲染!
return (
<div>
<input
onChange={(e) => setText(e.target.value)}
placeholder="enter a text"
/>
<input
type="number"
value={number}
onChange={(e) => setNumber(e.target.value)}
/>
<span>Total: {sum}</span>
</div>
);
useMemo VS useEffect
计算量大的组件与同级组件完全解耦
计算量大的组件通过组件参数传递传递
缓存组件 useMemo vs React.memo
Last updated