Улучшаем перфоманс без memo() || Советы от Дэна Абрамова

  Рет қаралды 19,781

АйТи Синяк

АйТи Синяк

Күн бұрын

Пікірлер: 56
@lightinthedark5708
@lightinthedark5708 3 жыл бұрын
Спасибо, декомпозиция наше всё.
@jses8560
@jses8560 3 жыл бұрын
Жду с нетерпением новое видео по React от вас, спасибо!
@it-sin9k
@it-sin9k 3 жыл бұрын
Приятно такое слышать) значит будем готовить новое видео)
@Sergey-lg1ke
@Sergey-lg1ke 2 жыл бұрын
Потратить четыре минуты и получать столько пользы, не помню когда последний раз такое было. Надо чаще смотреть твой контент)) Спасибо большое!
@it-sin9k
@it-sin9k 2 жыл бұрын
Спасибо большое! Очень приятно читать такие комментарии!
@Quentinrei
@Quentinrei Жыл бұрын
Круто, очень круто 🎉🎉🎉
@maria-kuznetsova-s
@maria-kuznetsova-s 7 ай бұрын
> Если рендерится компонент, у которого есть children, это не заставляет рендерится children Даже не задумывалась об этом. Спасибо за полезную информацию, как всегда великолепно!
@it-sin9k
@it-sin9k 7 ай бұрын
рад быть полезным)
@eugeniyvinnikov5480
@eugeniyvinnikov5480 3 жыл бұрын
Все гениальное просто.... действительно. Скорее новое видео, новую тему, новый разбор ))
@it-sin9k
@it-sin9k 3 жыл бұрын
следующее видео уже на подходе)
@prog-hak
@prog-hak 3 жыл бұрын
Радует, что синяк - производное от синий, а не от алкоголизм))) Классный ролик!
@it-sin9k
@it-sin9k 3 жыл бұрын
ахаха) маркетинг наше все))
@АнатолийГорбов-о1ь
@АнатолийГорбов-о1ь Жыл бұрын
Мега полезные видео на канале! Спасибо))
@valeriipimenov4894
@valeriipimenov4894 3 жыл бұрын
Ты красавчик! Классный контент)
@it-sin9k
@it-sin9k 3 жыл бұрын
Спасибо!)
@Vlad-yj2ny
@Vlad-yj2ny 3 жыл бұрын
Спасибо большое, вы очень помогаете)
@it-sin9k
@it-sin9k 3 жыл бұрын
Это и есть цель нашего канала) Если и вы хотите нам помочь, тогда поделитесь этим видео со своими коллегами или в социальных сетях)
@CELTRIX88
@CELTRIX88 3 жыл бұрын
Класс! )
@mykhailostepanishchev6472
@mykhailostepanishchev6472 3 жыл бұрын
Супер! Спс
@WebDev_51
@WebDev_51 Жыл бұрын
Круто очень 🎉❤😅
@Grey8260
@Grey8260 2 жыл бұрын
Вот это поворот! Спасибо!
@Infinity-zf8ms
@Infinity-zf8ms Жыл бұрын
Спасибо
@ИванИванов-у3ч4м
@ИванИванов-у3ч4м 3 жыл бұрын
Очень кртуые видосы, топи дальше!
@alexanderzharkov6953
@alexanderzharkov6953 2 жыл бұрын
Огонь!
@Ramosok
@Ramosok 2 жыл бұрын
Супер!!!
@romangoncharuk4455
@romangoncharuk4455 2 жыл бұрын
спасибо!
@alekseyleha9942
@alekseyleha9942 2 жыл бұрын
Радостный как трамвай, спасибо
@metakirin8710
@metakirin8710 Жыл бұрын
Забавно вышло, если объединить этот и предыдущий ролики: если перерендериться родитель, то его дети - нет и наоборот (из прошлого ролика), если перерендеряться дети, то родитель тоже из-за новых инстансов в массиве детей. Спасибо🐼
@bakaleisanich
@bakaleisanich 3 жыл бұрын
Пасиб
@ilikecola378
@ilikecola378 2 жыл бұрын
Лайк за интересное видео
@dm.hol.3624
@dm.hol.3624 3 жыл бұрын
Сначала я не понял. Потом попробовал понять, но не понял снова. А щас каааааак понял! Благодарю. P.S.: Рассказал о канале коллегам.
@it-sin9k
@it-sin9k 3 жыл бұрын
ахаххаха) P.S. Низкий поклон!)
@kirillskomarovskiy2490
@kirillskomarovskiy2490 3 жыл бұрын
Второй вариант не работает как первый. Т.к color передавался в стили p, а во втором варианте передаётся в стили div в компоненте ColorPicker.
@it-sin9k
@it-sin9k 3 жыл бұрын
там можно все подтюнить, чтобы работало, я просто оставил как в оригинале было у Дена. Но в докладе например, я поднимал эту же тему и сделал в двух примерах код абсолютно одинаковым :)
@aidosbatyrkulov3272
@aidosbatyrkulov3272 3 жыл бұрын
react не ре-рендерить только children или все компоненты которые были отрисованы через переменные ?
@it-sin9k
@it-sin9k 3 жыл бұрын
Ответ: все компоненты, которые были отрисованы через переменные. Специально даже перепроверил, перед ответом, вот такой код . А внутри Wrapper вставил счетчик и {variable}{children}. В итоге при рендере Wrapper-а ни children, ни variable не рендерились :)
@aidosbatyrkulov3272
@aidosbatyrkulov3272 3 жыл бұрын
Круто, спасибо большое. Ценю это
@lukyanenkomikhail7459
@lukyanenkomikhail7459 Жыл бұрын
отличный материал как избежать лишних вызовов компонент без использования memo React.memo. Отзыв кривой, но роботам такое нравится )
@roman65ge5T
@roman65ge5T 3 жыл бұрын
Top
@LRXAORLOV
@LRXAORLOV 3 жыл бұрын
Ок, понял) если перерисовался родитель, то и дети тоже перерендериваются) забываем такое правило) Главное чтобы читаемость от такого не страдала
@it-sin9k
@it-sin9k 3 жыл бұрын
верно) connect немного атрофировал, эту идеологию в наших умах)
@ReAgent003
@ReAgent003 2 жыл бұрын
@@it-sin9k Если родитель перерисовался, то и дети тоже? Но на 2:28 внутри компонента перерисовывается инпут, верно? То есть , как родитель инпута, тоже должен это сделать? Если да, то почему снова весь с не перерендерился?
@it-sin9k
@it-sin9k 2 жыл бұрын
@@ReAgent003 Компоненты начинают перерисовываться, только с той ноды, на которой произошли изменения. В нашем случае с компонента Form и ниже. Такова идеология Fiber архитектуры
@Владимир.П-е9о
@Владимир.П-е9о 3 жыл бұрын
А разве не правильнее сложную логику в эффекте с пустыми зависимостями писать? Так и в SSR этот код не будет выполняться, и при каждом рендере тоже. Просто оставлять такой компонент в общее использование опасно, ведь кто-то другой не станет также делать враппер. Возможно я не так понял пример с while
@it-sin9k
@it-sin9k 3 жыл бұрын
в этом примере конечно while можно вынести в useEffect без зависимостей и это будет работать. Это надуманный пример, чтобы показать, если вдруг у вас в компоненте выполняется какая-то сложная логика, можете без memo даже избежать лишних рендеров
@Владимир.П-е9о
@Владимир.П-е9о 3 жыл бұрын
@@it-sin9k а какая логика может быть в рендере? Если обработка данных, то тоже в эффекте с зависимостями на эти данные. Если работа с свойствами, вызывающими reflow, то тут точно нужен useEffect, т.к. нужно явно ограничить частоту вызова, да и в эффекте не случится кирпич приложения в ssr. В рендере слишком хрупко получается, особенно, если потребуется в процессе работы вызвать callback или изменение стейта (можно попасть на цикличный рендер). Мне просто даже в голову не приходило никогда решать такие проблемы через мемо, т.к. эффекты как раз для таких штук нужны. Я на кодревью часто прошу убрать из рендера тяжелую логику в useEffect или useMemo (если она тяжелее меморизации и не часто должна вызываться), поэтому спрашиваю, вдруг я неправ был все это время :)
@it-sin9k
@it-sin9k 3 жыл бұрын
вы говорите только лишь о том, что на очередном рендере можно избежать, чтобы лишний код не вызвался, т.к. у того же useEffect зависимости не изменились. А как же вызов самой функции компонента, все что в return у вас лежит будет отправлено на превращение из JSX в Fiber node. Все хуки которые в этом компоненте, например тот же useEffect проанализируются, что не надо им отрабатывать, т.к. зависимости не изменились. А если у вас есть селекторы какие то, сходить в redux объект данные забрать или взаимодействие с контекстом или еще чем, то тоже это произойдет. Суть в том, что рендер компонента, это сама по себе затратная функция, хоть пользователь глазом и не увидит, что там лишнее, что-то зарендарилось. А пример с while, это лишь для наглядности, чтобы вы разглядели проблему. И поняли, что можно написать лучше.
@-X-Ray-
@-X-Ray- 3 жыл бұрын
Прикольное решение, но такое ощущение, что в силу лени разработчиков, большинство просто обернёт последний компонент в memo, ибо быстрее)
@it-sin9k
@it-sin9k 3 жыл бұрын
думаю да) но возможно хоть пару десятков людей изменит свой подход к архитектуре компонентов, это будет уже победа для такого маленького видосика)
@-X-Ray-
@-X-Ray- 3 жыл бұрын
@@it-sin9k один маленький шаг для видосика и большой шаг для всех просмотревших)
@Ruzakisan
@Ruzakisan Жыл бұрын
мораль - учите SOLID.
@kinderhero8897
@kinderhero8897 3 жыл бұрын
+
@Изучение-з9п
@Изучение-з9п 2 жыл бұрын
пздц, 10 дней назад на собесе за это говно спрашивали
@it-sin9k
@it-sin9k 2 жыл бұрын
ахахах) видимо тоже видео посмотрели))
@Изучение-з9п
@Изучение-з9п 2 жыл бұрын
@@it-sin9k ага, а чел выдавал мол он это сам придумал...
@it-sin9k
@it-sin9k 2 жыл бұрын
@@Изучение-з9п не очень добросовестный товарищ :)
Чем отличается SimpleMemoComponent от MemoComponent?
14:06
АйТи Синяк
Рет қаралды 7 М.
Правильный подход к детям
00:18
Beatrise
Рет қаралды 11 МЛН
Мен атып көрмегенмін ! | Qalam | 5 серия
25:41
Chain Game Strong ⛓️
00:21
Anwar Jibawi
Рет қаралды 41 МЛН
Все ли вы знаете о React key?
8:47
АйТи Синяк
Рет қаралды 39 М.
Что вы знаете о useCallback?
10:02
АйТи Синяк
Рет қаралды 50 М.
Способы разработки веб-сайтов
25:03
Vallek: фронтенд и образование
Рет қаралды 14 М.
Новые возможности React с useDeferredValue
11:06
АйТи Синяк
Рет қаралды 15 М.
Для чего нужен useMemo в React, простым языком
4:46
Дмитрий Герасимов - о разработке в сфере IT просто
Рет қаралды 11 М.
Podlodka #154 - UI-фреймворки
1:38:11
Podlodka
Рет қаралды 5 М.