Tepki Notu
Kullanmak memo
, bileşenleri değişmediyse, React'in bir bileşeni oluşturmayı atlamasına neden olur.
Bu performansı artırabilir.
Bu bölüm React Hook'larını kullanır. Kancalar hakkında daha fazla bilgi için Tepki Kancaları bölümüne bakın.
Sorun
Bu örnekte, Todos
bileşen, yapılacaklar değişmese bile yeniden işlenir.
Örnek:
index.js
:
import { useState } from "react";
import ReactDOM from "react-dom";
import Todos from "./Todos";
const App = () => {
const [count, setCount] = useState(0);
const [todos, setTodos] = useState(["todo 1", "todo 2"]);
const increment = () => {
setCount((c) => c + 1);
};
return (
<>
<Todos todos={todos} />
<hr />
<div>
Count: {count}
<button onClick={increment}>+</button>
</div>
</>
);
};
ReactDOM.render(<App />, document.getElementById('root'));
Todos.js
:
const Todos = ({ todos }) => {
console.log("child render");
return (
<>
<h2>My Todos</h2>
{todos.map((todo, index) => {
return <p key={index}>{todo}</p>;
})}
</>
);
};
export default Todos;
Arttırma düğmesini tıklattığınızda, Todos
bileşen yeniden oluşturulur.
Bu bileşen karmaşıksa performans sorunlarına neden olabilir.
Sertikalı olmak!
95 $ KAYIT
Çözüm
Bunu düzeltmek için kullanabiliriz memo
.
Bileşenin gereksiz yere yeniden oluşturulmasını memo
önlemek için kullanın .Todos
Todos
Bileşen dışa aktarımını şuraya sarın memo
:
Örnek:
index.js
:
import { useState } from "react";
import ReactDOM from "react-dom";
import Todos from "./Todos";
const App = () => {
const [count, setCount] = useState(0);
const [todos, setTodos] = useState(["todo 1", "todo 2"]);
const increment = () => {
setCount((c) => c + 1);
};
return (
<>
<Todos todos={todos} />
<hr />
<div>
Count: {count}
<button onClick={increment}>+</button>
</div>
</>
);
};
ReactDOM.render(<App />, document.getElementById('root'));
Todos.js
:
import { memo } from "react";
const Todos = ({ todos }) => {
console.log("child render");
return (
<>
<h2>My Todos</h2>
{todos.map((todo, index) => {
return <p key={index}>{todo}</p>;
})}
</>
);
};
export default memo(Todos);
Artık Todos
bileşen, yalnızca todos
aksesuarlar aracılığıyla kendisine iletilenler güncellendiğinde yeniden işleniyor.