Мой главный вопрос: я хочу понять, почему добавление date.now () внутри Usememo, кажется, нарушает оптимизацию. Насколько я знаю, компонент React, обернутый React.memo, только повторно использует рестораны, если его реквизит изменяется, поэтому в этом случае он должен повторно рендеринг только при изменении элементов или onitemclick. И когда элементы изменятся, USEMEMO в любом случае будет перекомплектовать обработки, потому что ссылка на массив отличается. Это кажется простым вопросом, но я изо всех сил пытался полностью понять это в течение нескольких дней. < /P>
Код: Выделить всё
const ExpensiveComponent = React.memo(({ items, onItemClick }) => {
const processedItems = useMemo(() => {
return items.map((item) => ({
...item,
processed: true,
timestamp: Date.now(),
}));
}, [items]);
return (
{" "}
{processedItems.map((item) => (
onItemClick(item)}>
{item.name}
))}{" "}
);
});
Я попробовал регистрацию с и без даты.now (), и выходы казались практически одинаковыми, за исключением того, что временные метки отсутствуют, когда они не включены, что является ожидаемым результатом.
Подробнее здесь:
https://stackoverflow.com/questions/797 ... imizations