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

Sdílet
Vložit
  • čas přidán 24. 07. 2024
  • Продолжаем изучение React. Заглянем «под капот» и разберём тонкости использования библиотеки.

Komentáře • 84

  • @evergreen-
    @evergreen- Před rokem +52

    ==Как рендерится 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 Ответы на вопросы

  • @user-ww3qz7yx1t
    @user-ww3qz7yx1t Před 8 měsíci +12

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

    • @xxxxrat
      @xxxxrat Před měsícem

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

  • @user-yj8tf7xb6g
    @user-yj8tf7xb6g Před 5 měsíci +1

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

  • @chirkov
    @chirkov Před rokem +1

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

  • @d0paminer
    @d0paminer Před 2 lety +28

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

  • @StrayVegan
    @StrayVegan Před rokem

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

  • @denispepper2830
    @denispepper2830 Před rokem +1

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

  • @user-cv5eo9eu9z
    @user-cv5eo9eu9z Před 2 lety

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

  • @user-fz7fe8cn7i
    @user-fz7fe8cn7i Před 2 lety +35

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

    • @dobermanpharaoh7567
      @dobermanpharaoh7567 Před 9 měsíci

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

    • @pvttrix
      @pvttrix Před 7 měsíci

      @@dobermanpharaoh7567где?

  • @LadyBugFeature
    @LadyBugFeature Před 2 měsíci +1

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

  • @amalker
    @amalker Před rokem +3

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

  • @isephar
    @isephar Před rokem +2

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

  • @user-mn2po8ns2z
    @user-mn2po8ns2z Před rokem

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

  • @Vlad-sw4zd
    @Vlad-sw4zd Před rokem +1

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

  • @PalladinGOLD
    @PalladinGOLD Před 2 měsíci

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

  • @omak3313
    @omak3313 Před 5 dny +1

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

    • @YandexforFrontend
      @YandexforFrontend  Před 3 dny

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

  • @mansur.gabidullin
    @mansur.gabidullin Před rokem

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

  • @vladimiryazvinskiy2948
    @vladimiryazvinskiy2948 Před 10 měsíci

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

  • @elmarklimov5458
    @elmarklimov5458 Před 2 měsíci

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

  • @floky1342
    @floky1342 Před rokem +2

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

  • @fpvba
    @fpvba Před 4 měsíci

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

  • @lliarona
    @lliarona Před rokem

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

  • @erassylzh5658
    @erassylzh5658 Před 2 lety +10

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

    • @fpvba
      @fpvba Před 4 měsíci

      Гениально 😂😂

  • @user-rn5cl2fr8b
    @user-rn5cl2fr8b Před rokem +1

    Спасибо!

  • @user-lm8py5rb4m
    @user-lm8py5rb4m Před rokem +1

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

  • @zorislaw
    @zorislaw Před 2 lety +1

    Спасибо.

  • @lifeisbeautifu1
    @lifeisbeautifu1 Před rokem

    Спасибо

  • @deniskalinin5101
    @deniskalinin5101 Před 9 měsíci

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

  • @enlighty
    @enlighty Před 2 lety +1

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

  • @user-lc3le2ic1t
    @user-lc3le2ic1t Před 11 měsíci +1

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

    • @alexx5151
      @alexx5151 Před 6 měsíci

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

  • @griha296
    @griha296 Před rokem

    тупа лудшый

  • @661marker
    @661marker Před 11 měsíci +1

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

  • @anastasiia_idle
    @anastasiia_idle Před 8 měsíci

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

  • @kinderhero8897
    @kinderhero8897 Před 2 lety +5

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

  • @FahradLevonyan
    @FahradLevonyan Před rokem

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

  • @user-ei9jd7pw4s
    @user-ei9jd7pw4s Před rokem +1

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

  • @romanr5843
    @romanr5843 Před 3 měsíci

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

    • @ru_irina
      @ru_irina Před měsícem

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

  • @acidentd9722
    @acidentd9722 Před 2 lety

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

  • @petruhinmaxim
    @petruhinmaxim Před 8 měsíci

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

  • @maximk5620
    @maximk5620 Před 9 měsíci

    Ифаки 😂😂

  • @pandalove6795
    @pandalove6795 Před 9 měsíci

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

  • @Gdyvfjttyhhh
    @Gdyvfjttyhhh Před rokem +2

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

    • @temaProg
      @temaProg Před rokem +3

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

    • @georgegrinding1793
      @georgegrinding1793 Před rokem +1

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

  • @user-uy1fz3gv9i
    @user-uy1fz3gv9i Před rokem +14

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

    • @pavuk7086
      @pavuk7086 Před 10 měsíci

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

    • @anastasiia_idle
      @anastasiia_idle Před 7 měsíci +2

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

  • @whiteguards43
    @whiteguards43 Před rokem

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

  • @rin2004able
    @rin2004able Před 7 měsíci

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

  • @Denisqa-ke1xo
    @Denisqa-ke1xo Před 11 měsíci

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

  • @kowkavn2356
    @kowkavn2356 Před 3 měsíci

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

  • @user-yk9nj6co9d
    @user-yk9nj6co9d Před rokem

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

  • @xxxxrat
    @xxxxrat Před měsícem

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

    • @temaProg
      @temaProg Před měsícem

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

  • @tahirdibirov1430
    @tahirdibirov1430 Před rokem +1

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

  • @user-yk7sm4mr4o
    @user-yk7sm4mr4o Před 10 měsíci +1

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

    • @user-kf5tp5ps9b
      @user-kf5tp5ps9b Před 9 měsíci

      В чем отличие чавканья от чваканья?

    • @alfanidj
      @alfanidj Před 9 měsíci +1

      Пока не увидел этот коммент - не замечал

    • @user-nj6dh2ck2y
      @user-nj6dh2ck2y Před 2 měsíci

      Любит сглатывать)

  • @gyros9162
    @gyros9162 Před rokem

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

  • @cyberbullya
    @cyberbullya Před 10 měsíci +1

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

    • @johnramirezzz
      @johnramirezzz Před 2 měsíci

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

  • @gubatenkov
    @gubatenkov Před 2 lety +1

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

    • @katiapervak
      @katiapervak Před 2 lety

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

    • @sweeterEater
      @sweeterEater Před 2 lety

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

    • @MrSanya789
      @MrSanya789 Před 2 lety

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

    • @katiapervak
      @katiapervak Před 2 lety +1

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

    • @gubatenkov
      @gubatenkov Před 2 lety

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

  • @eliassmith7949
    @eliassmith7949 Před rokem +3

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