React Memo
El uso memohará que React omita la renderización de un componente si sus accesorios no han cambiado.
Esto puede mejorar el rendimiento.
Esta sección utiliza React Hooks. Consulte la sección React Hooks para obtener más información sobre Hooks.
Problema
En este ejemplo, el Todoscomponente se vuelve a representar incluso cuando los todos no han cambiado.
import { useState } from "react";
import ReactDOM from "react-dom/client";
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>
</> );
};
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App />);
Cuando hace clic en el botón de incremento, el Todoscomponente se vuelve a renderizar.
Si este componente fuera complejo, podría causar problemas de rendimiento.
Solución
Para solucionar este problema, podemos usar memo.
Úselo memopara evitar que el Todoscomponente se vuelva a renderizar innecesariamente.
Envuelva la Todosexportación del componente en memo:
import { useState } from "react";
import ReactDOM from "react-dom/client";
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>
</>
);
};
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App />);
Comentarios
Publicar un comentario