React (продвинутый)

Поділитися
Вставка
  • Опубліковано 21 жов 2024

КОМЕНТАРІ • 95

  • @evergreen-
    @evergreen- Рік тому +56

    ==Как рендерится UI в React==
    10:27 Фаза 1: Рендеринг и сравнение
    10:44 Дерево элементов
    14:26 Дерево волокон (React Fiber)
    18:18 Что такое Fiber
    19:03 Структура Fiber
    25:38 Работа (effect)
    36:04 Как происходит обновление интерфейса
    46:53 Эвристика сравнения изменений
    50:12 Фаза 2: Commit
    ==Оптимизация компонетов==
    1:01:40 State Colocation
    1:04:28 Ремаунты
    1:10:19 HOC (Higher Order Components)
    1:19:50 React.memo
    ==Отношение родительских и дочерних компонентов==
    1:22:58 Props drilling
    1:26:03 Контекст
    1:32:19 Порталы
    ==Паттерны==
    1:38:07 Паттерны
    1:46:20 Ответы на вопросы

  • @КириллРодичев-у7м
    @КириллРодичев-у7м 11 місяців тому +13

    Спасибо за лекцию! заметил пару моментов:
    36:34 "Мы с вами помним, что у нас есть два действия, которые вызывают ререндер - это установка состояния ... и изменение пропсов".
    Для ререндера есть только одно условие - это изменение стейта компоненты или ее родителя. Изменение пропсов - это частный случай изменения стейта родителя.
    1:28:45 "Самая большая проблема контекста ... - это то, что при изменении значения у нас перерендериваются все дочерние компоненты".
    У контекста нет такой пробелмы. При изменении значения перерендериваться будут только потребители контеста, использующие useContext.
    1:29:24 "RestorantsPage завернуть в memo".
    Оборачивание в memo не поможет, если компонента является потребителем контекста. Независимо от memo, при изменении значения value, компоненты с useContext будут ререндериться. Вообще использование memo тут неуместно, и следует лишь из неверного допущения о том, что все дочерние элементы ререндерятся при изменении значения контекста.

    • @xxxxrat
      @xxxxrat 4 місяці тому

      Разве при перерендеринге родителя все его потомки не уходят в перерендеринг?

    • @СашаАлександр-е4м
      @СашаАлександр-е4м Місяць тому

      ​@@xxxxrat если не ошибаюсь то эта проблема решается использованием хука useContext , а проблема описанная вами это устаревший метод Consumer и все неверные предположения идут от него.

  • @d0paminer
    @d0paminer 2 роки тому +31

    Качественный, детальный разбор работы react "под капотом" + автор непринужденно, красочными аналогиями и в простых примерах доносит далеко не самые простые концепции. Оч полезно, лайк)

  • @ВасяСидоров-я6ш
    @ВасяСидоров-я6ш 2 роки тому +36

    Боже, как я кайфанул, 2 часа как 20 минут, спасибо большое. Лектор - просто красавчик, без воды, по фактам))

    • @dobermanpharaoh7567
      @dobermanpharaoh7567 11 місяців тому

      А ещё он отличные курсы ведёт 👍

    • @pvttrix
      @pvttrix 9 місяців тому

      @@dobermanpharaoh7567где?

  • @ЭльнараГайнанова-ф3к
    @ЭльнараГайнанова-ф3к 8 місяців тому +1

    Спасибо большое за доклад! Очень понятно объяснили сложные темы 👍

  • @PalladinGOLD
    @PalladinGOLD 5 місяців тому +1

    Самая офигенная лекция по реакту

  • @LadyBugFeature
    @LadyBugFeature 5 місяців тому +1

    Спасибо 🙏🏻 объяснили то что я так долго не могла понять

  • @СашаАлександр-е4м
    @СашаАлександр-е4м Місяць тому

    В иституте засыпаешь после 30 минут , а тут добровольно сидишь 2 часа, еще и слушаешь внимательно и пытаешься очмвслить. Вот она сила мотивации и хорошей подачи автора.

  • @denispepper2830
    @denispepper2830 Рік тому +1

    Спасибо за лекцию - это единственная русскоязычная адекватная лекция для новичков

  • @omak3313
    @omak3313 3 місяці тому +4

    После скорого релиза React 19 было бы здорово увидеть апдейт про React на этом канале

    • @YandexforFrontend
      @YandexforFrontend  3 місяці тому +3

      Здравствуйте! Спасибо за идею, расскажем о вашем пожелании команде, подумаем, что можно сделать 🙌

  • @Vlad-sw4zd
    @Vlad-sw4zd Рік тому +1

    Ого, про хоки крутой совет. Раньше использовал их только в реакт-редаксе и не понимал, как их можно еще использовать.

  • @chirkov
    @chirkov Рік тому +2

    Супер, после середины мне стало интересно.
    И спасибо за примеры приближенные к реальности!

  • @elmarklimov5458
    @elmarklimov5458 5 місяців тому

    просто офигеннейший доклад! Такого не хватает, ютуб сейчас на 99 наводнён бесполензным пересказами, как работают хуки и какие виды бывают... Про underhood, такое ощущение, либо никто не хочет знать, либо react-блогеры сами не понимают, как эта магия работает)

  • @bapydev
    @bapydev 7 місяців тому

    Очень круто
    В одно время много провозился с перерендерами когда делал dnd элемент)

  • @erassylzh5658
    @erassylzh5658 2 роки тому +10

    Спасибо, очень интересно!
    2 часа пролетели как 1 час на скорости х2 😁

    • @bapydev
      @bapydev 7 місяців тому

      Гениально 😂😂

  • @amalker
    @amalker 2 роки тому +3

    Спасибо, просто кайфую от подачи и качества информации. Круто!

  • @661marker
    @661marker Рік тому +2

    такие вопросы к лектору: утверждается, что файбер нода мутабельна, но в то же время в презентации показывается, как файбер дерево клонируется(!). если файбер ноды клонируется, а старое дерево удаляется, значит файберы тоже иммутабельны? (или иллюстрации в презентации некорректные?). либо они могут себя вести по разному в зависимости от эффектов, которые должны быть выполнены, и тогда клонированное дерево может удалится, и только обновиться исходное?

  • @isephar
    @isephar 2 роки тому +2

    Лектор лучший и информация подана классно. Спасибо!

  • @КириллСандрыгайло

    ХВхвх "Он знает своего родителя и знает одного своего родственника, либо брата либо сестру. Возможно его брат или сестра знают еще одного брата или сестру. Согласен, семейка странная" ххвхв это шедеврально, сделало мой день)

    • @alexx5151
      @alexx5151 9 місяців тому

      доходит до самого нижнего чайлда
      - Я один ребенок одного родителя
      (вздох) бывает...

  • @СергейЦветов-н4н

    Это самый топовый урок по файберам

  • @FLOKY42
    @FLOKY42 2 роки тому +2

    Надеюсь увидеть продолжение про Redux

  • @StrayVegan
    @StrayVegan Рік тому

    Спасибо большое за такой полезный и классный доклад 🤝

  • @КамарЗай
    @КамарЗай 2 роки тому

    Спасибо огромное за ваш труд мы очень ценим

  • @АлексейМелентьев-ч3в

    действительно шикарный материал

  • @user-ei9jd7pw4s
    @user-ei9jd7pw4s Рік тому +1

    Компонент перерендовелся, перерендовелся да не перевырендовелся.

  • @FahradLevonyan
    @FahradLevonyan Рік тому

    Если я правильно понял, то в stack будет такая очередь правильно?
    1.async tasks
    2.fiber
    3.micro tasks
    4.macro tasks

  • @romanr5843
    @romanr5843 6 місяців тому

    Спасибо за лекцию! Не совсем ясно с порталами и модалками. Обычно модалке не задается position absolute. Делаем для нее position fixed, top:0, left:0 with и height - 100%. И модалка всегда по центу, внутри отрисовываем контент. Для чего тут создавать портал не совсем понятно.

    • @ru_irina
      @ru_irina 4 місяці тому

      Если у родительского компонента есть transform, то fixed у дочернего не работает.

  • @mansur.gabidullin
    @mansur.gabidullin Рік тому

    Большое Спасибо!

  • @pandalove6795
    @pandalove6795 Рік тому

    Я вооообще ничего не понял) не ну ладно, что-то понял, но вот например. Лектор сказал, что Fiber мутабельный, но почему создается новое дерево из Fiber? Почему каждый Fiber клонируется? Я всегда думал, что это происходит с VDOM-ом. А вот Fiber уже подлавливают новые React Element-ы.

  • @anastasiia_idle
    @anastasiia_idle 11 місяців тому

    на счет провадйеров не поняла, как нельзя несколько провайдеров обернуть? у меня в пет проекте 3 провайдера, и все компоненты получают доступ

  • @aldarzhai
    @aldarzhai Місяць тому

    А как называется 3 часть видео про реакт и есть ли в плейлисте? Скиньте ссылку, пожалуйста

    • @YandexforFrontend
      @YandexforFrontend  Місяць тому

      Здравствуйте! Увы, ссылкой поделиться не сможет, так как Ютуб их удаляет. Название третьей части: «React (Экосистема React приложения)».

    • @aldarzhai
      @aldarzhai Місяць тому +1

      @@YandexforFrontend спасибо!

  • @deniskalinin5101
    @deniskalinin5101 Рік тому

    Лектор просто батя

  • @petruhinmaxim
    @petruhinmaxim 11 місяців тому

    O(n³) => O(n) за счет пользовательской настройки и изменения типа (что формально тоже задается пользователем react). Whaaaat... Пойду собесы по алгоритмам посмотрю)

  • @Gdyvfjttyhhh
    @Gdyvfjttyhhh Рік тому +2

    1:31:25, Не совсем правильно. Redux не использует контекст от слова совсем. Это ядро, которое написано на ванильном JS'e и контекста там и близко нет. А вот контекст использует либа react-redux, чтобы коннектить наши компоненты со стором. Это принципиальная разница на самом деле.

    • @temaProg
      @temaProg Рік тому +3

      Да, все верно, тут оговорился, имел ввиду react-redux библиотеку, которая поставляет инструменты для работы реакт приложения с редаксом

    • @georgegrinding1793
      @georgegrinding1793 Рік тому +1

      @@temaProg не могу разобраться: запускаем наш код, срабатывают render всех компонентов, JSX разворачивает в React.createElement, строится дерево элементов и соответствующий ему связанный список fiber нод. Далее где-нибудь в середине дерева изменился стейт у компонента, каким образом появляется новое дерево? первоначальное построилось благодаря вызову всех существующих render, а новое? мы же заново не запускаем у абсолютно всех компонентов render? и уже 2 дерева сравниваются - обход связанного списка механизмом reconcillation

  • @ЕвгенийТ-ч8в
    @ЕвгенийТ-ч8в 2 роки тому +1

    Спасибо!

  • @Denisqa-ke1xo
    @Denisqa-ke1xo Рік тому

    "Возможно его брат и сестра тоже знает о каком-то брате или сестре. Семейка странная, я согласен" :D

  • @vladimiryazvinskiy
    @vladimiryazvinskiy Рік тому

    Спасибо,оч доходчиво)

  • @lliarona
    @lliarona Рік тому

    Спасибо, дружище

  • @НикитаАгафонов-я9ы

    Могу ошибаться, но вроде изменение пропсов никак не влияет на решение React ререндерить элемент, и не важно изменилась ссылка на объект пропсов или нет. React всегда ререндерит элемент, если изменился стэйт родителя. Каждый раз сравнивать стейты было бы слишком дорого, поэтому мы сами должны сообщить React когда стоит сравнить пропсы через memo.

    • @pavuk7086
      @pavuk7086 Рік тому

      Верно ли что React.memo стоит юзать в тех случаях, когда у родителя меняется стейт, а у дочернего ничего не меняется? Для того, чтоб этот дочерний компонент не ререндерился? Немного запутала лекция тем, что изменение пропсов заставляет компонент ререндерится, хотя скорее речь о том, что изменение пропсов завязанных на стейте родителя вызывает ререндер. Что звучит абсурдно, учитывая что любой изменение стейта родителя вызывает ререндер дочерних. Короче я пока писал уже разобрался вроде как…

    • @anastasiia_idle
      @anastasiia_idle 10 місяців тому +2

      изменение пропсов невозможно без изменения состояния. так что де-факто, изменение пропсов треггирит ре-рендер

  • @rin2004able
    @rin2004able 10 місяців тому

    HOC -- это HighER Order Component, HOF -- это HighER Order Function

  • @ДмитрийСотников-и4м

    пожалуйста, приобретите менее чувствительные микрофоны, каждое чавкание и чвакание слышно. безумно отвлекает

  • @vanivka
    @vanivka Місяць тому

    Лекции 2 года, но вроде уже 2 года назад абсолютно каждый айтишник отлично знал что человек видит только 60 кадров это бред полный. Если ваш сайт будет отображать 60фпс на айфоне про версии у вашего руководителя, он пошлёт вас просто, потому что это будет лагать для него на фоне системы, которая работает в 120.

    • @fedormalkov7662
      @fedormalkov7662 Місяць тому

      Ты явно знаешь о чём говоришь

  • @xxxxrat
    @xxxxrat 4 місяці тому

    Что, опять? Ну как в такой серьезной лекции можно утверждать, что изменение пропсов влечет перерендеринг? Простой пример: пропсы завязываем на ref, чтобы не происходил перерендеринг, и по клику в родителе их меняем. Пока не произойдет перерендеринг родителя (а в нашем примере он не происходит), fiber не узнает про изменение пропсов, потому что return родителя не вызовется.
    В остальном очень полезно, спасибо.

    • @temaProg
      @temaProg 4 місяці тому

      Здравствуйте. Тут оговорка, изменение пропсов не приводит к перерендеру, это последствия перерендера

  • @enlighty
    @enlighty 2 роки тому +1

    Во славу Плети!

  • @kinderhero8897
    @kinderhero8897 2 роки тому +5

    дайте плз ссылку на предыдущее видео

  • @lifeisbeautifu1
    @lifeisbeautifu1 Рік тому

    Спасибо

  • @crypto4elik
    @crypto4elik Місяць тому

    лекция по продвинутому реакту, а тему мы передаем пропс дриллингом без контекста?) Ну слабенький пример, но суть конечно ясна

  • @whiteguards43
    @whiteguards43 Рік тому

    53 минута, что означает дестроится ?

  • @tahirdibirov1430
    @tahirdibirov1430 Рік тому +1

    Изменение пропсов не вызывает перерендеринг, 01:38:52 - это жиза

  • @maximk5620
    @maximk5620 Рік тому

    Ифаки 😂😂

  • @mkstlz
    @mkstlz 2 місяці тому

    ПОПЕЙ ТЫ УЖЕ ЭТУ ВОДИЧКУ ПОЖАЛУЙСТА !!! ААААааААаааа

  • @gyros9162
    @gyros9162 Рік тому

    лекция классная, но первая часть слишком метафоричная, с отвлекающими отступлениями. Почему не сказать "сиблинги", а все время говорить про каких-то братьев и сестер, которые, по идее, ничем друг от друга не отличаются...
    Вторая часть отличная, спасибо ) Презентация ограничивала в объяснениях, не хватало лайфкодинга, манипуляций с кодом, из-за этого приходилось много жестикулировать

  • @griha296
    @griha296 Рік тому

    тупа лудшый

  • @acidentd9722
    @acidentd9722 2 роки тому

    2:51 представления потом сбой до 4:47

  • @kowkavn2356
    @kowkavn2356 6 місяців тому

    Те кто уже работает, подскажите, это уровень знаний джуна или джуна+?

    • @nafanya3733
      @nafanya3733 2 місяці тому

      в 8 классе я проходил
      P.S. Сеньор-реактер

    • @fedormalkov7662
      @fedormalkov7662 Місяць тому

      Это уровень знаний эрудита, у которого много свободного времени. Думаю, что многие сеньоры не знают как работают файберы и как может пригодиться key, кроме как в списке элементов. Но лекция очень интересная. Тем, кому она попалась, очень повезло.

  • @cyberbullya
    @cyberbullya Рік тому +1

    Откуда взяли что человек 60 кадров видит? Хоть бы изучили инфу для начала

    • @johnramirezzz
      @johnramirezzz 5 місяців тому

      Тренированные лётчики видят вплоть до 1000 кадров

  • @АлексейСаломатин-о4ю

    У меня проблемы с буквой "Р" ))

  • @gubatenkov
    @gubatenkov 2 роки тому +1

    Есть у кого ссылка на видос про асинхронность?

    • @katiapervak
      @katiapervak 2 роки тому

      Есть телеграм канал со всеми записями, ссылку не дает вставить

    • @sweeterEater
      @sweeterEater 2 роки тому

      @@katiapervak а подскажите, пожалуйста, как найти этот телеграм канал?

    • @MrSanya789
      @MrSanya789 2 роки тому

      @@katiapervak Можете пожалуйста название канала дать?

    • @katiapervak
      @katiapervak 2 роки тому +1

      Записи открытых лекций яндекс 2022

    • @gubatenkov
      @gubatenkov 2 роки тому

      @@katiapervak канал не отображает предыдущие записи для новых подписчиков. Есть ссылка на yuotube-видео про асинхронность?

  • @eliassmith7949
    @eliassmith7949 Рік тому +4

    опять сектанты свидетели «человеческий глаз больше 60 фпс не видит»