function slowFunction(num) {
for (let i = 0; i < 10000; i++) {
for (let i = 0; i < 10000; i++) {}
}
return num * 10;
}
const numValue = slowFunction(num);
function slowFunction(num) {
for (let i = 0; i < 10000; i++) {
for (let i = 0; i < 10000; i++) {}
}
return num * 10;
}
const numValue = useMemo(() => slowFunction(num), [num]);
// App.jsx
import "./styles.css";
import Child from "./Child";
import { useState } from "react";
export default function App() {
const [re, reRender] = useState(1);
console.log("父组件更新");
return (
<div className="App">
<h1>避免子组件重新渲染</h1>
<button onClick={() => reRender((n) => n + 1)}>组件重新渲染</button>
<div>
<Child text="使用memo" />
</div>
</div>
);
}
// Child.jsx
import { memo } from "react";
function Child({ text }) {
console.log("子组件渲染");
return <div>Child: {text + "的组件"}</div>;
}
export default memo(Child);