Komentáře •

  • @user-jl7vr6xy7g
    @user-jl7vr6xy7g Před 10 měsíci +4

    Михаил, это были очень познавательные 8 минут)) Спасибо, наконец-то всё по полочкам с useCallback. На проектах все, в том числе я, его использовали неправильно.

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

    Михаил, спасибо за видео. Как всегда на высоте. Сложные вещи простым языком. Было очень полезно послушать про правильное использование useCallback

  • @IvanZakharanka
    @IvanZakharanka Před rokem +1

    Как всегда отлично! Спасибо! А еще я прям офигел насколько хороша новая дока React 😯

  • @anonlog
    @anonlog Před rokem +33

    Михаил, спасибо вам за разъяснение useCallback, его лепят везде где нужно и не нужно и никто не понимает особо, зачем он нужен)) Теперь за 8 минут вашего видео все стало на свои места!! От вас контент просто бесценный!!))☺👍 Лайк однозначно!))

  • @user-be7cz1ml1j
    @user-be7cz1ml1j Před 10 měsíci +3

    До этого видео я не мог понять для чего useCallback и как ей воообще пользоваться. Видео супер полезное. Частно тут нахожу что-то для себя, спасибо! (Самоучка)

  • @olegsh2888
    @olegsh2888 Před rokem +15

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

  • @vladislav_pikiner
    @vladislav_pikiner Před 11 měsíci +4

    спасибо за сложные темы простым языком)

  • @necelentano
    @necelentano Před rokem +1

    Спасибо Михаил! Полезное видео 👍

  • @unknownWakeborder
    @unknownWakeborder Před rokem

    Очень полезный материал получился, спасибо!

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

    Михаил как всегда отличное видео и понятное! Спасибо

  • @ivmerk
    @ivmerk Před 8 dny

    доходчиво, спасибо за труды..

  • @sphinxenen
    @sphinxenen Před rokem +1

    Просто супер доступно объяснил. Спасибо большое!!!

  • @mrakobes3736
    @mrakobes3736 Před rokem +1

    Отличное объяснение, спасибо!

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

    отлично, очень ясное видение ситуации, спасибо!

  • @OlegSas
    @OlegSas Před rokem

    Михаил, спасибо большое! Просто, понятно, интересно.

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

    Спасибо большое за видео, очень качественно всё поясняется

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

    Определенно отличное видео, спасибо!!

  • @maxsolo6446
    @maxsolo6446 Před rokem +2

    Михаил, спасибо большое! Смотрел твой бытрый курс по React Router, и тут после третьего видео CZcams "подсунул" мне это видео. Думал не смотреть, ведь "-да что я ещё могу узнать про useCallback?", оказалось, что ключевую вещь😅. Спасибо! Теперь буду тщательно думать перед решением мемоизации сущностей🤝

  • @serjdenisov2114
    @serjdenisov2114 Před rokem

    Михаил, спасибо за информацию!!!

  • @promoabys
    @promoabys Před rokem

    Михаил, спасибо.
    Всё просто и понятно !!!

  • @user-kv9ur9hi4n
    @user-kv9ur9hi4n Před rokem +41

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

    • @sharkman6434
      @sharkman6434 Před rokem +6

      У ayub begimkulov тоже есть объяснение и оно несколько глубже даже чем тут )

    • @powt73sas
      @powt73sas Před rokem +1

      Жёстко.

    • @DubinArtur
      @DubinArtur Před 7 měsíci +1

      Вы, случайно, не вместе работаете?)

  • @mikhailblush5261
    @mikhailblush5261 Před rokem +6

    на 8:00 чуть оговорился "два кейса, когда нужен useEffect"

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

    спасибо за видео!

  • @artedza
    @artedza Před rokem

    Спасибо за объяснение!

  • @seosspro9686
    @seosspro9686 Před rokem

    Спасибо, все отлично объяснил

  • @sankov206
    @sankov206 Před rokem +2

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

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

    Спасибо, наконец-то дошло, для чего этот хук нужен! Хотя второй вариант я использовала, благодаря подсказкам eslint(, но без понимания особого)

  • @Kotovar
    @Kotovar Před 28 dny

    Большое спасибо:)

  • @v.demchenko
    @v.demchenko Před rokem

    Кайф🎉 можно еще видео подробное по хукам?

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

    Спасибо за пример про связку memo + useCallback. Такого даже чат GPT не подсказал)

  • @aleksprimetv
    @aleksprimetv Před rokem +5

    Круто, можно про useMemo так же по полочкам разложить?)

  • @anatoliiilescu839
    @anatoliiilescu839 Před rokem

    Thanks Mihail!

  • @givgiv6688
    @givgiv6688 Před rokem

    Спасибо за видео

  • @daniyarzhanakhmetov7741

    Супер, спасибо!

  • @serious_psychologist
    @serious_psychologist Před rokem

    спасибо, очень понятно.

  • @rossmanov
    @rossmanov Před rokem +3

    Михаил, вы создаете очень полезный контент)

    • @boycovclub
      @boycovclub Před rokem +1

      дану нах...?))) а я не знал)

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

    Ждем про useMemo)

  • @STELLS541
    @STELLS541 Před rokem

    Очень годно))

  • @cmac2cmac
    @cmac2cmac Před rokem

    Спасибо!

  • @elstar7466
    @elstar7466 Před rokem +1

    Есть еще коллбэк-рефы, когда функция принимает как аргумент node (dom-узел) и присваивается атрибуту ref в JSX. Используется это обычно для передачи dom-узла кастомному хуку. useRef не всегда тут может помочь, ибо useEffect на него не реагирует, а вот коллбэк-реф он увидит.

  • @ALEKSEY_77737
    @ALEKSEY_77737 Před 5 měsíci

    Спасибо

  • @maxsolo6446
    @maxsolo6446 Před rokem

    Михаил, можешь сделать похожий обзор про useMemo? Понимаю, что там похожая ситуация, но всё же, возможно есть свои нюансы

  • @vasiliy_konnov
    @vasiliy_konnov Před rokem

    Очень крутой 😎👍

  • @eugenekaler6048
    @eugenekaler6048 Před rokem

    Михаил, спасибо Вам за ваши труды!
    С удовольствием смотрю Ваши курсы на Udemy.
    Планируете ли Вы какой-нибудь новый курс?
    Очень хотелось бы, раскрыть тему CI/CD Jenkins.

    • @mishanep
      @mishanep Před rokem +1

      Приветствую.
      В настоящий момент никакой конкретики по курсам нет. Есть мысли, идеи, но нет времени. По Дженкинсу в планах ничего не было.

  • @askarzhaanbaev5834
    @askarzhaanbaev5834 Před 4 měsíci +1

    Спасибо, но я ничего не понял. Можно ещё какой нибудь пример

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

    Спасибо огромное, это лучшее объяснение useCallback во всех интернетах! Но я только одного не понял - зачем линтер требует добавить logUpdate в массив зависимостей во втором примере? Какая тут логика?

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

    У нас в конторе принято всегда оборачивать. Я уже устал спорить, поэтому просто делаю че просят )) А в целом да, знаю давно, что это шляпа каждый раз мемоизировать. Еще есть другой фетишь: юзмемо. Каждую букву заворачивают 😅

  • @dmitryrazdobudko4914
    @dmitryrazdobudko4914 Před rokem

    Спасибо за ролик. Очень наглядное объяснение, ибо тема действительно непонятная. Полагаю, аналогичный подход актуален и для useMemo?

    • @mishanep
      @mishanep Před rokem

      C useMemo чуть сложнее. Здесь мы просто создаем функцию, не вызывая ее. А useMemo предполагает мемоизацию вычислений. Поэтому иногда данный хук нам может пригодиться, чтобы не повторять дорогих вычислений, даже если мы не планируем передавать их в другой компонент. В целом, логика с memo и использованием массивов/объектов как зависимостей для других хуков - аналогичная. Но, повторюсь, есть и другие кейсы использования.

  • @romanmed9035
    @romanmed9035 Před rokem

    если можно о useEffect но с акцентом на помещение используемой в нем функции в массив зависимостей. линтер этого требует. но вот сегодня поместил и получил кольцевую обработку. как в видео. в случае когда мы не можем поместить функцию внутрь эффекта. например она вообще берется из собственного хука.

  • @carcinogen0075
    @carcinogen0075 Před rokem

    Забыли сказать про ментальную нагрузку) Минимальный оверхед который дает useCallback не стоит возможных проблем с производительностью в местах где забудешь обернуть в useCallback. Так что с практической точки зрения всё лепить в useCallback имеет смысл

  • @zubenkopetrovich4573
    @zubenkopetrovich4573 Před rokem

    господа, сколько не смотрел не могу понять разницу между useMemo, useEffect, useCallback. Даже после просмотра этого видео не до конца понял всю ситуацию с useCallback. Если не сложно, можете подробно разъяснить или скинуть ссылку на какой-то источник с подробным объяснением.

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

    1е нормальное объяснеие🙏😀

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

    4:17 говорится, что обновился родитель, но чей это родитель? этот момент не понятен, может кто объяснить?

  • @voytko1994
    @voytko1994 Před rokem

    отличный урок! Сам никогда не понимал толком, знал в теории, но на практике - профан, давай еще про useMemo, в чем разница с useCallback?

    • @yantakushevich1014
      @yantakushevich1014 Před rokem +1

      useCallback возвращает функцию, а useMemo возвращает уже готовое значение, например объект. А так, суть одна и та же - возвращать ссылку на одну и ту же сущность, если зависимости не изменились.

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

    fantastic !

  • @grigoriyil6400
    @grigoriyil6400 Před rokem +1

    Михаил, вы волшебник. Я только учусь и вчера убил весь день на решение проблемы лишнего рендеринга. А тут ваш видосик подоспел как раз вовремя. Осталось придумать как это все состыковать с useForm :)) Спасибо вам большое за контент.

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

    Сделай такой де пример, и предавай колбэк в таблицу и посмотри как будет рендерится или нет

  • @HyndoDristalix14
    @HyndoDristalix14 Před rokem

    Вопрос , а если мы данные вырисовываем с RTK query , то нужно ли использовать useCallback?

    • @HyndoDristalix14
      @HyndoDristalix14 Před rokem

      либо React query, там же по сути автоматом кешируется все

    • @mishanep
      @mishanep Před rokem +1

      Что конкретно вы предлагаете кэшировать с useCallback при использовании названных библиотек?

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

    пять лет уже постоянно что-то делаю на реакт но до этого материала до сих пор не дорос..

  • @TpyrBo3Db
    @TpyrBo3Db Před rokem +1

    тупо лучший

  • @petrs5567
    @petrs5567 Před rokem

    Grand merci à vous, но обращаю внимание уважаемого автора на потенциальную оговорку 8:03: по всей видимости, вместо фразы "два кейса когда нам нужен useEffect()" имелось в виду "два кейса, когда нам нужен useCallback()"? Поправьте, если не так

  • @weynemeynen
    @weynemeynen Před rokem

    Два кейса когда нужен useEffect (8:03) или всё же useCallback?

  • @xice111
    @xice111 Před rokem +1

    видел как некоторые люди добавляют useCallback для callback отправленных в addEventListener, я так понимаю это излишне?

    • @mishanep
      @mishanep Před rokem

      Излишне. Листнеры в таком варианте обычно добавляются в эффекте, внутри которого правильно будет и сам хэндлер создать.

  • @jamjam3337
    @jamjam3337 Před rokem

    👏👍

  • @maaobzor2824
    @maaobzor2824 Před rokem +1

    В первом случае хватило бы только React.memo, повторных ререндеров компоненты не происходило бы

  • @user-uw9xp8en3v
    @user-uw9xp8en3v Před 5 měsíci

    Стоило сказать про преждевременную оптимизацию всё же. А то пойдут ведь добавлять useCallback+memo куда не попадя, считая, что так надо 😅

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

    а если в Hook вынести?

  • @boburmustafo8868
    @boburmustafo8868 Před rokem

    spasibo

  • @michaelveselov589
    @michaelveselov589 Před rokem +4

    Спасибо, Михаил, у Вас наконец-то появились нормальные коллеги. Судя по объяснению данного хука в рамках курса по Реакт, достойных и мотивирующих коллег у Вас на тот момент не было!))

    • @mishanep
      @mishanep Před rokem

      В смысле мотивирующих на подобный контент?))

    • @michaelveselov589
      @michaelveselov589 Před rokem +1

      @@mishanep Михаил, если я правильно понял предисловие, то до сегодняшнего дня у Вас были коллеги, твердо знавшие когда и в каких сочетаниях использовать useCallback))

  • @randomedd9102
    @randomedd9102 Před rokem +1

    8:02 useCallback*

  • @ArtmenBoss
    @ArtmenBoss Před rokem

    В доке еще пишут можно все кастомные хуки в useCallback оборачивать

    • @mishanep
      @mishanep Před rokem

      Оно там звучит примерно как "на всякий случай". Если команда небольшая и понятно как хуки будут использоваться, то оборачивать всё подряд было бы странно. Если пишем библиотеку, то уже выглядит логично.

    • @user-uw9xp8en3v
      @user-uw9xp8en3v Před 5 měsíci

      Я без доки для себя взял это правило. На самом деле тут двояко.
      Из плюсов - уменьшается ментальная сложность. Нам не нужно каждый раз заходить в хук и проверять, обернута ли функция, если мы ее используем в зависимостях в компоненте. Из минусов - уменьшается читаемость кода и увеличивается время написания. Немного увеличивается ментальная сложность при работе с хуком.

  • @sno-oze
    @sno-oze Před rokem +1

    useCallback и memo - это не бесплатно, не факт, что в попытках оптимизации, всё не стало гораздо медленнее, чем без них. Нужны пруфы, пока же видно лишь то, что нет смысла использовать на столь легковесных компонентах лишнюю оптимизацию.

  • @ssurrokk
    @ssurrokk Před rokem +1

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

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

    База))

  • @miloman1995s
    @miloman1995s Před rokem

    а как же removeEventListener, там необходимо передавать функцию с изначальной ссылкой, и соответственно для этого мы можем callback функцию, передаваемую в addEventListener обернуть в useCallback - чтобы не потерять ссылку на нашу изначальную callback функцию)

    • @mishanep
      @mishanep Před rokem +1

      Смотря как вы добавляете, снимаете ивенты. Как правило, это одна и та же функция, обернутая в useEffect. А значит и ссылка на функцию будет одна.

  • @profesor08
    @profesor08 Před rokem

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

  • @lesters
    @lesters Před rokem +1

    спасибо очень полезная инфа что он юзается в тандеме с мемо

  • @sergey_zatsepin
    @sergey_zatsepin Před rokem

    Ну вот эти слова про "дорогую операцию" ничем не подкрепленные, вообще не айс. Сам то проверял или так просто, услышал от кого-то, кто сам услышал от кого-то и т.д., и так вы просто повторяете бездумно друг за другом? Что там с holy js кстати, едешь/не едешь?

    • @alext5030
      @alext5030 Před rokem +1

      Типичное поведение практически всех современных программистов, в т.ч. высокого уровня - это слепое следование каким-либо догмам, не пытаясь разобраться, насколько они актуальны и в каких случаях. Туда же ничем не подкрепленные заявления о низкой / высокой производительности, бесконечная битва с ререндерами (в SPA), бОльшая часть которых на производительность с позиции end user влияет практически... никак.
      А потом имеем глючное нечто типа сайта Озона (там Vue, но в данном случае это иррелевантно) с вот уже годами (периодически) отваливающейся фильтрацией.
      Таковы реалии современного программирования "по фэн-шую".

    • @user-uw9xp8en3v
      @user-uw9xp8en3v Před 5 měsíci

      Тут скорее дело не в том, дорогая операция или нет. Это в любом случае профилировать надо тогда.
      Оптимизация просто не нужна, если нет видимых проблем с перформансом. А оптимизация не бесплатна больше в плане то, что мы пишем лишний код/обертки, увеличиваем ментальную сложность. Пускай мы даже ускорили работу компонента, если в реальном использовании этого не видно, это нет смысл.

  • @darkside2436
    @darkside2436 Před rokem +2

    Преждевременная оптимизация хуже чем никакая оптимизация вовсе.

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

    Автору и некоторым комментаторам не мешало бы мат часть подтянуть. Не так страшен ререндер, сколько перемонтирование в дом. Вот так насмотрятся таких видео, а потом удивляются, почему у них грид или тейбл тормозят, как отложения мамонта.

  • @Garry_Levin
    @Garry_Levin Před 17 dny

    Ролик может и неплохой, но без исходного текста не имеет никакого смысла. Дизлайк.

  • @ice_rd
    @ice_rd Před rokem +1

    Почему во Vue все так просто и лаконично. Нужно действие - кидай в экшен, нужно вычисление + кэш - используй компьютед. В React такие сложности из колбека, мемо и рефов ... 🥲

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

      Сам то же сравнивал и пришел к таким же выводам. Неоправданно все усложнено!!!

    • @PowWowVideo
      @PowWowVideo Před rokem +1

      В реакте ТОЛЬКО 3-4 хука, которые надо заучить и правильно использовать и ВСЁ:) Какие сложности ?

    • @ReAgent003
      @ReAgent003 Před rokem

      Согласен, реакт запутанный и в нём есть высокий риск уронить производительность. А Свелте, как и вью, проще в этом плане. Вот доклад на эту тему
      czcams.com/users/livebB-R_lOlTLE?feature=share&t=744

    • @xeleos
      @xeleos Před rokem

      согласен. В реакте на простейшие оптимизации надо тратить кучу времени, а во вью подход совершенно иной, там функции итак создаются 1 раз, поэтому ничего такого не надо.

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

      @@PowWowVideo Согласен, хуков не много, но их часто используют для создания кастомных хуков, и потом с этим разбираться надо). Сложности в том что из коробки в React все таки меньше чем в том же Vue. Много нужно самому дописывать