React Memo: повышение производительности реагирования с простой меморизацией
]React Приложения часто имеют дело с большими наборами данных и сложными компонентами, где ненужные повторные рестораны могут значительно повлиять на производительность. Чтобы решить это, React предлагает React.Memo - простой, но мощный инструмент для оптимизации компонентов и сокращения времени рендеринга. В этом руководстве мы рассмотрим, как работает React Memo, почему это полезно и как его реализовать шаг за шагом.
]React.memo-это компонент высшего порядка (HOC) в React, который помогает запомнить функциональные компоненты. Мемонизация - это процесс кэширования вывода функции на основе ее входов, поэтому функция не должна пересекать результат для тех же входов. React Memo работает аналогичным образом: он «помнит» последний визуализированный вывод компонента и повторно использует его только при изменении его реквизита.
]в React, компоненты повторно рендеринг всякий раз, когда их родительские компоненты повторно рендеринг. Это может вызвать неэффективность, если вывод компонента не зависит от изменений в его родителе. Например, в сложных интерфейсах со многими компонентами вы можете увидеть задержку из-за чрезмерных повторных ресурсов. Использование React Memo может оптимизировать это, только обновляя компоненты, когда это необходимо.
], когда родительский компонент повторно воспроизводит, его дочерние компоненты также повторно рендеринг. Это может привести к узким месту производительности, особенно когда компоненты отображают статические данные или полагаются на неизменные реквизиты.
]приложения с глубоко вложенными компонентами могут столкнуться с медленной производительностью из-за кумулятивных повторных ресурсов. Мемонизация, с React Memo, помогает предотвратить повторные ресурсы компонентов, которые не требуют обновлений, повышая отзывчивость приложения.
]давайте пройдемся через базовую реализацию React Memo. Мы начнем с простого компонента, который не использует память и посмотрим, как добавление React Memo имеет значение.
import React, { useState } from 'react'; function Counter({ count }) { console.log('Counter component re-rendered'); return]Count: {count}
; } function App() { const [count, setCount] = useState(0); const [text, setText] = useState(''); return (); } export default App;setText(e.target.value)} placeholder="Type something..." />
В этом примере каждый раз, когда вы вводите поле ввода, компонент-компонент повторно использует компоненты, даже если значение счета остается неизменным. Это ненужный повторный рендеринг, который мы можем предотвратить с React Memo.
]]
import React, {usestate} от 'React';
const counter = React.memo (функция счетчика ({count}) {
console.log ('counter-компонент повторный рендеринг');
return
import React, { useState } from 'react'; const Counter = React.memo(function Counter({ count }) { console.log('Counter component re-rendered'); return]Count: {count}
; }); function App() { const [count, setCount] = useState(0); const [text, setText] = useState(''); return (); } export default App;setText(e.target.value)} placeholder="Type something..." />
]
] React Memo в действии: практическое сценарий со списками] Шаг 1: Создайте компонент списка без памятки
]import React, { useState } from 'react'; function Item({ item, onLike }) { console.log(`Rendering ${item.name}`); return (]); } function ItemList() { const [items, setItems] = useState([ { id: 1, name: 'Item 1', likes: 0 }, { id: 2, name: 'Item 2', likes: 0 }, { id: 3, name: 'Item 3', likes: 0 }, ]); const handleLike = (id) => { setItems((prevItems) => prevItems.map((item) => item.id === id ? { ...item, likes: item.likes 1 } : item ) ); }; return ({item.name}
{items.map((item) => (); } export default ItemList;- ))}
] Шаг 2: Оптимизируйте компонент элемента с React Memo
]const Item = React.memo(function Item({ item, onLike }) { console.log(`Rendering ${item.name}`); return (]); });{item.name}
]
] Когда использовать React Memo?]
]: React Memo выполняет мелкое сравнение, что означает, что оно не обнаружит изменения в глубоко вложенных объектах или массивах. Подумайте об использовании USEMEMO или USECALLBACK, если вы передаете сложные опоры. ]
: Использовать React Devtools, чтобы определить, какие компоненты на самом деле выигрывают от меморизации. Чрезмерное использование React Memo может привести к сложности кода с незначительным повышением производительности.
]]
] Заключение]
]Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3