useEffect в React. Исправляем частую ошибку

Поділитися
Вставка
  • Опубліковано 4 сер 2024
  • В этом видео мы рассмотрим хуки useEffect и useLayoutEffect, разберем их отличия, а также ознакомимся с очень распространенной ошибкой, которая может привести к race conditions и способами ее исправления
    Telegram - t.me/snr_fullstack
    00:00 - Почему важно понимать useEffect
    00:45 - Что такое useEffect
    03:00 - Сноска про batching
    03:45 - fetch запрос внутри useEffect
    05:28 - cleanup функция
    08:40 - Race conditions!
    12:45 - useLayoutEffect
    14:43 - useInsertionEffect
    15:00 - Итоги

КОМЕНТАРІ • 52

  • @ihorv8258
    @ihorv8258 Рік тому +7

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

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

    Огромное спасибо за видео! Объяснять такие нюансы очень важно!

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

    Чувак, ну ты хитрец, я увидел видосик на превьюхе которого было указано useInsertionEffect, просмотрел весь видос, в ожидании разбора этого хука, а его то и не было))) Ну ладно, материал годный, говоришь интересно, а я повторил то что уже знал, в целом время потрачено не зря))

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

    С телефона не смотрительно, но по сути вкусно

  • @user-ue7lj2to9q
    @user-ue7lj2to9q 10 місяців тому

    Спасибо, за видео. Кратко, чётко и доступно.

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

    Супер наглядно и понятно подан материал, спасибо!

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

    довольно доходчиво) Единственное, это мелкий шрифт, но я думаю, что это уже исправлено в последующих видео. Спасибо

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

    Хорошая подача материала, ждем новые видео)

  • @user-pi1vr6rf1k
    @user-pi1vr6rf1k Рік тому

    Классно объясняешь. Без лишней воды. Подписался)

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

    Спасибо за подробное объяснение! Однозначно подписка

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

    Очень жду про батчинг, отличная подача!

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

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

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

    Спасибо за видео! Очень интересно узнавать такие вещи будучи начинающим

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

    Попался ролик в рекомендациях. Хорошее дело делаешь! Лайк + подписка) Продолжай в том же духе, желаю развития твоему каналу

  • @user-nb3lf7fu2m
    @user-nb3lf7fu2m 10 місяців тому

    Спасибо!

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

    Было интересно послушать про race conditions, жду видео про batching

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

    очень полезно. Спасибо за твое время

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

    Шикарное видео, благодарю !
    Да, он в кор-тиме реакта !

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

    Посмотрел, продолжил делать проект, заметил у себя при подгрузке данных с апи через useeffect моргание, вспомнил твой видос и пофиксил просто добавив uselayouteffect, спасибо за контент)

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

    За хорошие примеры, отдельно спасибо! А то большая часть на ютубе это стандартные, из доков)

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

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

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

    Бро не сдавайся понимаю просмотров пока мало, запили как происходит рендер в реакте, какая очередность компонентов юзефектов, поддержу лайком)

  • @user-py3lm1bh9f
    @user-py3lm1bh9f Рік тому +2

    Очень полезно, годный контент.Огромная благодарность за проделанную работу! Прям от души 🙏 . Будут ли практики по React типа марафона??

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

    Балдеж, бро. Только увеличь код пожалуйста, а то на телефоне вообще ничего не видно

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

    Привет! Можешь сделать видео по всем (во многом использующимся) хукам, и показать как их использовать чтоб не рендерился вся страница, а только определенный компонент

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

    кайф

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

    про батчинг в реакте есть интересная вещь, если вызывать сетстейт в rAF (requestAnimationFrame) он батчится не будет.

  • @chervyakov-vladislav
    @chervyakov-vladislav Рік тому

    Привет! Подскажи, какое расширение отвечает за сведения о параметрах функции? например useEffect( effect: () => {...})

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

    Спасибо за видео!
    Почему при вызове функции setModalIsVisible в качестве аргумента передаётся не bool значение, а функция
    (p) => !p

  • @701block
    @701block Рік тому

    Видос отличный,но,пожалуйста,либо сделай окно вс кода побольше или увеличь шрифт,а то приходится прям вглядываться :(

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

    Почему handleResize не внутри useEffect, где он используется?

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

    Хорошие видео, но примеры немного тяжеловаты) посмотрел два видео и в обоих увидел, что они тяжеловаты для восприятия, плюс код примеров мелкий) понимаю хочется отобразить весь код, но если сделать код попроще, то и размер шрифта можно будет увеличить

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

    А что это за расширение, которое подсвечивает название параметров?

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

    Прошу хотя бы при монтаже увеличить громкость звука, слишком тихо.

  • @user-yg8nh2ek6w
    @user-yg8nh2ek6w 10 місяців тому

    На будущее: автор, измените масштаб на более крупный при записи видео. Я не слепой, но разглядывать мелкие буковки, сами понимаете... так опытные стримеры не делают. Заранее благодарю

  • @user-ql5on8rk3i
    @user-ql5on8rk3i Рік тому

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

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

    можно код сделать более масштабированее?

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

    Хочу знать почему рендерится 2 раза

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

    useEffect react

  • @Dmitriy-bq2xh
    @Dmitriy-bq2xh Рік тому

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

    • @Dmitriy-bq2xh
      @Dmitriy-bq2xh Рік тому

      @@senior_zone для handleResize нужно как то сохранить ссылку, т.е. чтобы в addEventListener и removeEventListener она была одинаковая. В вашем примере при первом же обновлении state эта ссылка потеряется, т.к. handleResize не замемоизирован

    • @701block
      @701block Рік тому

      @@Dmitriy-bq2xh Можешь подробнее объяснить чуток,почему она не произойдет,оно же на маунте инициализирует функцию handleResize и в теории если компонент не произведет больше апдейтов,то ссылка на функцию остается той же самой.

    • @701block
      @701block Рік тому +1

      @@Dmitriy-bq2xh по факту,ему просто надо handleResize создавать внутри этого useEffect'a и тогда вообще никаких проблем быть не должно.

    • @Dmitriy-bq2xh
      @Dmitriy-bq2xh Рік тому

      @@701block да это классное решение, а теперь представь что твой handleResize для вычисления будет использовать какой нибудь входящий в компонент пропс ....)и это жиза

    • @Dmitriy-bq2xh
      @Dmitriy-bq2xh Рік тому

      @@senior_zone Сдаюсь! Согласен, сработали рефлексы)Невнимательно посмотрел на список зависимостей. Ведь в данном случае правила оформления реакт хуков будут ругаться, указывая на то, что вы не добавили в список зависимостей функцию handleResize. "Значит, вы что-то не договариваете" говорят они. Лучшем решением как уже было написано выше будет: переместить эту функцию в эффект

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

    не совсем понятное объяснение по функции очистки, он как с ней так и без нее , фунеция эффекта всё равно отработала

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

    Очень мелко

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

    Ну вот зачем нужно пользоваться инструментами пропагандистов и рекламщиков? Если на картинке (или в названии) что то заявлено, расскажи об этом! Просмотрел бесполезный для меня ролик из-за заявленного useInsertionEffect, и что я получил? А получил я желание поставить дизлайк и забанить канал, даже несмотря на хоорошую подачу материала. Учитывайте, пожалуйста, это при создании контента

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

    НИШТЯК
    ЗАПИЛИ ПЛИЗ ВИДОСЫ ПРО ВСЕ ОСНОВНЫЕ ХУКИ🙃