Size: a a a

JavaScript.Ninja

2021 April 19

AK

Anton Kalodzich in JavaScript.Ninja
Тогда у меня остался лишь вопрос, как так получается, что замена обработчикам события на дом элементе дешевле мемоизации :)
источник

AI

Arthur Irgashev in JavaScript.Ninja
реакт просто перекинет ссылку, а с мемоизацией тебе нужно выполнить какой-то код (твой код, а потом ещё и библиотечный, который всем этим делом управляет), а потом всё равно сравнить ссылки и принять решение их не заменять
источник

AI

Arthur Irgashev in JavaScript.Ninja
поэтому в простых кейсах мемоизация может даже аффектить перф. вряд ли ты это заметишь, опять же (ну, только если сильно постараешься с оптимизациями))), но это вполне может быть
источник
2021 April 20

AK

Anton Kalodzich in JavaScript.Ninja
Вот и получается, что у нас есть некий компонент, который принимает в пропсах функцию. Он может просто прикидывать ее в дом элемент, а может использовать где-то ещё или вообще быть обернут в memo. Вот и догадайся, когда тебе useCallback помешает, а когда поможет...
источник

AI

Arthur Irgashev in JavaScript.Ninja
с тсом это попроще. memo оборачивает компоненттайп в MemoExotic что-то там. но вообще, при разработке просто не забивай этим голову
источник

AI

Arthur Irgashev in JavaScript.Ninja
реально приходится что-то оптимайзить в двух случаях
1) когда кто-то конкретно налажал
2) когда приходят и говорят, что тормозит.

ну и тогда уже можно кишки поковырять
источник

YS

Yuri Strelets in JavaScript.Ninja
по факту никогда не встречал с этим проблем, если компонент "свой" зайти глянуть в него дело 10-15 сек, а через какое-то время на проекте про это забудешь, а "внешние" либы ооочень редко обернуты в memo
источник

AK

Anton Kalodzich in JavaScript.Ninja
Просто у меня на проекте почему-то стараются все функции пихать в useCallback, когда они передаются в другой компонент, а я сейчас понял, что в 90% случаев он там избыточен
источник

YS

Yuri Strelets in JavaScript.Ninja
скорее всего
источник

AI

Arthur Irgashev in JavaScript.Ninja
а вот писали бы на классах, то и такой ерундой бы не занимались
источник

AI

Arthur Irgashev in JavaScript.Ninja
с 16+ реактом, наверное, 20% времени уходит на оборачивание всего и вся во все эти useRef / callback / memo
источник

AI

Arthur Irgashev in JavaScript.Ninja
то ли дело просто сделать :)

<com handleClick={this._handleClick} />
источник

AK

Anton Kalodzich in JavaScript.Ninja
В случае с useRef не вижу большой разницы с createRef
источник

YS

Yuri Strelets in JavaScript.Ninja
у меня был случай, был большой список компонентов (один компонент с разными пропсам), но он обернут в мемо, были большие лаги, и простое избавление от memo дало ускорение примерно в 2 раза
источник

AI

Arthur Irgashev in JavaScript.Ninja
это пока ты в useRef стейт не хранишь, чтобы оптимизировать апдейты ))
источник

YS

Yuri Strelets in JavaScript.Ninja
а она большая )))
источник

AI

Arthur Irgashev in JavaScript.Ninja
лол. это мемо на компаринг пропсов тратило ?
источник

YS

Yuri Strelets in JavaScript.Ninja
да
источник

AI

Arthur Irgashev in JavaScript.Ninja
нехило )
источник

YS

Yuri Strelets in JavaScript.Ninja
потом все еще было переделано на виртуализацию )) но штука с мемо убедила эту всю мемоизацию юзать очень и очень осторожно
источник